प्रसंगजावास्क्रिप्ट वस्तु से सरणी निकालें
मैं इतनी है कि जब किसी तालिका की एक चेकबॉक्स, विशेषता value
और चेकबॉक्स का data-title
पर उपयोगकर्ता क्लिक करता है एक जे एस में संग्रहित किया जाना चाहिए एक सुविधा को लागू करने के लिए कोशिश कर रहा हूँ ऑब्जेक्ट शाब्दिक नाम selected
एक नई कुंजी-मूल्य जोड़ी सरणी तत्व के रूप में।
यदि उपयोगकर्ता एक ही चेकबॉक्स पर दूसरी बार क्लिक करता है, तो संबंधित सरणी तत्व हटा दिया जाना चाहिए।
अंक
पहली बार एक चेकबॉक्स क्लिक किया जाता है के रूप में इरादा, एक सरणी वस्तु selected
में बनाया जाता है।
हालांकि, जब एक ही चेकबॉक्स को दूसरी बार क्लिक किया जाता है, तो संबंधित सरणी को हटाने के बजाय, एक नया (दोहराया गया) जोड़ा जाता है।
कोड
var selected = {items:[]};
$('#table').on('click', 'input[type="checkbox"]', function() {
var found = false;
$.each(selected.items, function(i, val) {
if (val.key == $(this).attr("value")) {
selected.items.splice(i ,1);
found = true;
return false; //step out of each()
}
});
if (found == false) {
selected.items.push({key: $(this).attr("value"), value: $(this).attr("data-title")});
}
console.log(selected);
});
इसे चेकबॉक्स की 'चेक' स्थिति पर निर्भर करते हैं? मुझे लगता है कि आपकी सरणी को वर्तमान में चेक किए गए बक्से का प्रतिनिधित्व करना चाहिए। – KWeiss
यह संभवतः 'val.key == $ (this) .attr (" value ")' के साथ एक समस्या है। यह संभवतः (जावास्क्रिप्ट में समानता की अजीबता के कारण), कभी सच नहीं होता है। आपको शायद [===] (http://stackoverflow.com/questions/359494/does-it-matter-which-equals-operator-vs-i-use-in-javascript-comparisons) का उपयोग करना चाहिए। [अपने जावास्क्रिप्ट को डीबग करें] (http://stackoverflow.com/questions/988363/how-can-i-debug-my-javascript-code) और यह – Liam
अच्छी तरह से लिखित प्रश्न बीटीडब्ल्यू की जांच करें, अच्छी तरह से किया गया। यदि केवल हर कम प्रतिनिधि उपयोगकर्ता इस विचारशील – Liam