2012-01-10 24 views
6

मैं एक ऐप के साथ काम कर रहा हूं जो jQuery और underscore.js दोनों का उपयोग करता है। मैं jQuery ऑब्जेक्ट्स के संग्रह पर any() और all() जैसे कुछ अंडरस्कोर के इटरेटर फ़ंक्शन का उपयोग करने में सक्षम होना चाहता हूं। क्या इसे करने का कोई तरीका है? मैं निम्नलिखित के समान कुछ करने के लिए करना चाहते हैं:jquery ऑब्जेक्ट्स के संग्रह पर underscore.js सूची फ़ंक्शंस का उपयोग करें

checkboxes = $("input[type=checkbox]"); 
_.filter(checkboxes, function(box) { 
    return box.is(":checked"); 
}); 

लेकिन यह एक त्रुटि फेंकता है:

Uncaught TypeError: Object #<HTMLInputElement> has no method 'is' 

तो मैं इस संदर्भ में बॉक्स एक jQuery वस्तु के रूप में की तरह अभिनय नहीं है संभालने हूँ ।

+1

केवल '$ (" इनपुट [प्रकार = चेकबॉक्स]: चेक किया गया ") करने का कोई कारण नहीं है? – Esailija

+0

मैं इस मामले में ऐसा कर सकता था, लेकिन मैं सामान्य रूप से सभी अंडरस्कोर इंटरैक्शन विधियों के बारे में पूछ रहा था, जिसमें _.any(), _.all(), आदि शामिल हैं – GSto

+2

आपको एक तत्व को संभालने के दौरान बहुत ही कम आवश्यकता है समय, उदाहरण के लिए आप अभी 'रिटर्न बॉक्स' चेक किया होगा; – Esailija

उत्तर

13

आप jQuery में box रैप करने के लिए है:

checkboxes = $("input[type=checkbox]"); 
checkboxes = _.filter(checkboxes, function(box) { 
    return $(box).is(":checked"); 
}); 

इसके अलावा, बजाय संग्रह में हर तत्व के लिए एक नई वस्तु बनाने की, तो आप सिर्फ देशी box.checked इस्तेमाल कर सकते हैं:

checkboxes = $("input[type=checkbox]"); 
checkboxes = _.filter(checkboxes, function(box) { 
    return box.checked; 
}); 

एक तरफ नोट:jQuery has its own filter method:

checkboxes = $("input[type=checkbox]").filter(function() { 
    return $(this).is(":checked"); 
}); 

इसके अलावा, आपके उदाहरण में - क्या आपको यकीन है कि आपको फ़िल्टर करना होगा? तुम बस के रूप में आसानी से अपने चयनकर्ता के रूप में इस्तेमाल कर सकते हैं कि:

checkboxes = $("input[type=checkbox]:checked") 
+0

फ़िल्टर सिर्फ एक उदाहरण था। मैंने कुछ स्थितियों के लिए _.any, _.all, और ऐसे उपयोग करने का भी सोचा। – GSto

+0

@ जोसेफ, धन्यवाद - इससे मुझे मदद मिली। क्या आप कृपया बता सकते हैं कि आपको jQuery में बॉक्स को लपेटना क्यों है? –

+0

@ केविन मैरिडिथ - जब भी आप एक jQuery संग्रह पर पुन: प्रयास करते हैं, तो इसके साथ अलग-अलग आइटम सरल वेनिला डोम तत्व होते हैं। यदि आप jQuery कार्यक्षमता प्राप्त करना चाहते हैं, तो आपको एक नया jQuery उदाहरण बनाना होगा। –

1

यहाँ box एक HTMLInputElement प्रकार वस्तु है। यह एक jQuery वस्तु नहीं है। .is एक jQuery ऑब्जेक्ट विधि है, आपको box से jQuery ऑब्जेक्ट की आवश्यकता है।

यह सिर्फ $(box) द्वारा किया जा सकता है। फिर .is() लागू करें।

$(box).is(":checked"); 
संबंधित मुद्दे