2010-11-06 22 views
53

मैं यह मेरे पृष्ठ में कतरना है नहीं है:jQuery: value.attr एक समारोह

$('#category_sorting_form_save').click(function(){ 
    var elements = $("#category_sorting_elements > div"); 
    $.each(elements, function(key, value) { 
     console.info(key," : ",value); 
     console.info("cat_id: ",value.attr('cat_id')); 
    }); 
}); 

और जब यह मार डाला जाता है, मैं:

0 : <div class="dragable" cat_id="6" value="" style="opacity: 1;">  
value.attr is not a function 
    console.info("cat_id: ",value.attr('cat_id')); 

क्या मैं गलत यहाँ कर रहा हूँ? मैं div.cat_id तत्व का मान प्राप्त करने की कोशिश कर रहा हूं।

उत्तर

94

उस jQuery ऑब्जेक्ट की सामग्री सादे डोम तत्व हैं, जो jQuery विधियों का उत्तर नहीं देती हैं (उदा। .attr)। इसे उपयोग करने के लिए आपको jQuery ऑब्जेक्ट में बदलने के लिए $() द्वारा मान को लपेटने की आवश्यकता है।

console.info("cat_id: ", $(value).attr('cat_id')); 

या बस .. डोम विधि सीधे

console.info("cat_id: ", value.getAttribute('cat_id')); 
+0

धन्यवाद एक गुच्छा, मदद की मुझे मेरी समस्या को समझने के लिए। –

5

आप कच्चे डोम तत्व के साथ काम कर रहे हैं का उपयोग एक jQuery वस्तु

console.info("cat_id: ",$(value).attr('cat_id')); 
2

का दूसरा पैरामीटर में लपेट की जरूरत है each() पर कॉलबैक फ़ंक्शन वास्तविक डीओएम तत्व होगा और एक jQuery wrapper ऑब्जेक्ट नहीं होगा। आप तत्व की getAttribute() विधि कॉल कर सकते हैं:

$('#category_sorting_form_save').click(function() { 
    var elements = $("#category_sorting_elements > div"); 
    $.each(elements, function(key, value) { 
     console.info(key, ": ", value); 
     console.info("cat_id: ", value.getAttribute('cat_id')); 
    }); 
}); 

या एक jQuery में तत्व लपेट ऑब्जेक्ट को स्वयं:

$('#category_sorting_form_save').click(function() { 
    var elements = $("#category_sorting_elements > div"); 
    $.each(elements, function(key, value) { 
     console.info(key, ": ", value); 
     console.info("cat_id: ", $(value).attr('cat_id')); 
    }); 
}); 

या बस का उपयोग $(this):

$('#category_sorting_form_save').click(function() { 
    var elements = $("#category_sorting_elements > div"); 
    $.each(elements, function() { 
     console.info("cat_id: ", $(this).attr('cat_id')); 
    }); 
}); 
संबंधित मुद्दे