2010-12-21 30 views
11

संपादित करें: यह काम करता है, लेकिन यह सुनिश्चित नहीं है कि क्यों?jquery - प्रत्येक/क्लिक फ़ंक्शन काम नहीं कर रहा है

$('button').each(function() { 
    $(this).bind(
     "click", 
     function() { 
      alert($(this).val()); 
     }); 
    }); 

मैं क्यों इस काम नहीं कर रहा है ... अभी, मैं तो बस बटन मूल्य के साथ एक चेतावनी उत्पादन के लिए कोशिश कर रहा हूँ यकीन नहीं है, लेकिन यह अपने पन्ने पर काम नहीं कर रहा। मुझे फ़ायरबग में कोई कंसोल त्रुटियां नहीं मिलती हैं और कुछ भी नहीं देख सकती जो इसे काम करने से रोकती है।

मेरे एचटीएमएल इस तरह दिखता है:

<table id="addressbooktable"> 
<thead> 
    <tr> 
     <th>Name</th> 
     <th>Action</th> 
    </tr> 
</thead> 

<tbody> 
    <tr> 
     <td>7892870</td> 
     <td><button id="button-20" class="custom-action" value="XY89" name="info">Click</button></td> 
    </tr> 

    <tr> 
     <td>9382098</td> 
     <td><button id="button-21" class="custom-action" value="XY544" name="info">Click</button></td> 
    </tr> 

    <tr> 
     <td>3493900</td> 
     <td><button id="button-22" class="custom-action" value="XY231" name="info">Click</button></td> 
    </tr> 
</tbody> 
</table> 

और कोड इस तरह दिखता है:

$('button').each(function() { 
    $(this).click(function() { 
     alert($(this).val()); 
    } 
    }); 

लेकिन, पर यह बिल्कुल कुछ नहीं करता है पर क्लिक? क्या मैं इसे गलत तरीके से उपयोग कर रहा हूं?

+0

शायद समस्या है, लेकिन आप चाहते प्रत्येक की जरूरत नहीं है, आप कर सकते हैं एक से अधिक नोड के साथ एक jQuery ऑब्जेक्ट पर क्लिक करें। और यह उन सभी को बाध्य करेगा। – Shurdoof

+0

एक उत्तर चिह्नित करें? – hunter

उत्तर

20

आप इस प्रकार का क्लिक करें घटना के साथ सभी बटन बाध्य कर सकते हैं, वहाँ उन के माध्यम से लूप करने की कोई जरूरत

$(function(){ 
    $("button").click(function() { 
     alert($(this).attr("value")); 
    }); 
}); 

लेकिन एक और अधिक सटीक चयनकर्ता हो सकता है बटन के लिए विधि। मूल्य विशेषता प्राप्त करने के लिए आप .attr() का उपयोग कर सकते हैं। यदि आप कस्टम विशेषताओं का उपयोग कर रहे हैं तो data-attribute का उपयोग करें।

इस तरह का प्रयास करें

$("button").click(function(){ 
    alert($(this).attr("value")); 
}); 
+0

धन्यवाद, यह काम करता है! –

+0

उत्तर के रूप में चिह्नित करें? – hunter

+0

यह अधिक कुशल है, क्योंकि प्रत्येक() तत्व को एक अलग आइटम के रूप में इलाज करने के बजाय चयनकर्ता पहले से ही तत्वों का संदर्भ रखता है। – IamFace

0

यूप। इस प्रयास करें:

$('button').click(function() { 
     alert($(this).val()); 
    }); 

तुम भी एक return false या .preventDefault() वहाँ में कर सकते हैं।

$(function(){ 
    $("button[id^='button-'").click(function() { 
     alert($(this).attr("value")); 
    }); 
}); 
0

आप .val() का उपयोग नहीं कर सकते हैं:

+0

हाय, प्रतिक्रियाओं के लिए धन्यवाद ... पोस्ट करने के बाद, मैंने "बांध" का उपयोग किया और ऐसा लगता है ... अगर कोई यह समझा सकता है कि यह इस मामले में क्यों काम करता है, लेकिन मूल में नहीं? मैं यह दिखाने के लिए अपनी पोस्ट संपादित कर रहा हूं कि मैंने इसे किस प्रकार बदल दिया है ... –

+0

@ N00BNum1 - आप एक गायब हैं ';'; आपके कोड में, इसलिए यह मान्य नहीं था ... मेरा जवाब देखें :) –

7

आप एक ); वंचित हो रहे हैं, और एक document.ready हैंडलर में सुनिश्चित करें कि आपके कोड है,:

$(function() { 
    $('button').each(function() { 
    $(this).click(function() { 
     alert($(this).val()); 
    }); //missing); here! 
    }); 
}); 

इस तरह यह उन <button> नहीं चलेंगे तत्व उन्हें खोजने के लिए $('button') के लिए DOM में हैं। इसके अलावा, आप तत्वों का एक सेट पर .click() चला सकते हैं, इस तरह:

$(function() { 
    $('button').click(function() { 
     alert($(this).val()); 
    }); 
}); 
+0

जो लोग, अच्छी तरह से देखा गया +1 – lnrbob

1

आप ) याद कर रहे हैं:

$('button').each(function(){ 
      $(this).click(function(){ 
       alert($(this).val()); 
      }); 
     }); 
नहीं
संबंधित मुद्दे