मेरे पास यह सरणी है जो ऑटो के आधार पर उत्पन्न होती हैएक गैलरी में चित्र। मुझे उन सभी अलग-अलग क्लिक ईवेंट देने की ज़रूरत है जो क्लिक पर किसी अन्य सरणी से चर आउटपुट करते हैं ताकि मैं उन्हें Pinterest पर सबमिट करने के लिए यूआरएल के अंत से जुड़ी एक स्ट्रिंग में पास कर सकूं। जो हिस्सा मुझे खिसका रहा है वह है क्लिक इवेंट,
यहां कोड है, अभी तक यह केवल अंतिम भाग को अलर्ट करता हैसरणी के और इसे दो बार करता है, मैं चाहता हूं कि प्रत्येक क्लिक पहले क्लिक के लिए पहली सरणी को अलग से अलर्ट करे, और दूसरे क्लिक के लिए दूसरी सरणी स्थिति।
यह संबंधित सरणी कंसोल है। लॉग किया गया, यह अलग-अलग बटन क्लिक करने के लिए अलग-अलग वर्ग है।
[".btnPinIt , 0", ".btnPinIt , 1"]
for (var j = 1; j < clickArray.length; j++){
console.log(clickArray[j]);
$(clickArray[j]).click(function() {
alert(j);
});
}
उत्तर:
उत्तर № 1 के लिए 1एक समस्या है आपकी j
सभी हैंडलर के लिए समान दायरे में है, इसलिए इसका मान है clickArray.length
जब क्लिक होता है, लेकिन इसके लिए आपको अलग हैंडलर की जरूरत नहीं होनी चाहिए। तत्वों पर डेटा विशेषताओं का उपयोग करें और उन्हें एक ही हैंडलर से चुनें।
दूसरा यह है कि आप सरणी को 0 के बजाय 1 से अनुक्रमित कर रहे हैं।
आपको एक सरणी की भी आवश्यकता है जिसमें वैध चयनकर्ता हों, इस समय, आपके पास अमान्य jQuery चयनकर्ताओं की एक सरणी है।
जैसे मान लें कि आपके पास आईडी चयनकर्ताओं की एक सरणी है:
clickArray = ["#btnPinIt1",
"#btnPinIt2"]
// save the index values on the elements
for (var j = 0; j < clickArray.length; j++){
$(clickArray[j]).attr("data-val", j+1);
}
// Use a startswith selector (in this example) to handle the clicks
$("[id^=btnPinIt]").click(function() {
alert($(this).data("val"));
});
सरल अभी भी आपकी कक्षा का उपयोग करना और उन्हें 1 से n के क्रम में अनुक्रमित करना होगा:
$(".btnPinIt").each(function(e, i){
$(this).attr("data-val", i+1);
}).click(function() {
alert($(this).data("val"));
});
यह भी जंजीरों click
तथा each
.