2012-05-14 17 views
22

मेरे पास एक पृष्ठ पर दो एएसपी रेडियो बटन हैं जो updatepanel में रखे गए हैं। मैंने jQuery के साथ उनके लिए एक क्लिक इवेंट लिखा:

$(document).ready(function() { 
    $(".inputs").click(function() { 
     alert($(this).id); 
    }); 
}); 

लेकिन यह अपरिभाषित लौटाता है। समस्या क्या है?

EDIT: 

     alert(" or " + $(this).attr("id")); 
alert(this.id); 

ये दो लाइनें null लौटती हैं!

+1

हमेशा console.log का उपयोग(); यह बहुत आसान होगा। आपके उदाहरण में आप इसका उपयोग कर सकते हैं: console.log (यह); और यह सभी डेटा (आईडी, क्लासनाम इत्यादि ...) दिखाता है – Min2liz

उत्तर

25

एक अन्य विकल्प (सिर्फ ताकि आप इसे देखा है):

$(function() { 
    $(".inputs").click(function (e) { 
     alert(e.target.id); 
    }); 
}); 

HTH।

4

$(this) एक jQuery ऑब्जेक्ट है जो DOM तत्व this को लपेट रहा है और jQuery ऑब्जेक्ट्स में id गुण नहीं हैं। क्लिक किए गए तत्व की id विशेषता प्राप्त करने के लिए आप शायद this.id चाहते हैं।

6

हिया डेमोhttp://jsfiddle.net/LYTbc/

इस DOM एलीमेंट का एक संदर्भ है, तो आप इसे सीधे लपेट कर सकते हैं।

attr API: http://api.jquery.com/attr/

.attr() विधि केवल मिलान किया सेट में पहले तत्व के लिए विशेषता मान हो जाता है।

एक अच्छा है, चीयर्स!

कोड

$(document).ready(function() { 
    $(".inputs").click(function() { 
     alert(this.id); 

     alert(" or " + $(this).attr("id")); 

    }); 

});

1
इस

: है DOM एलीमेंट $ (this): Jquery objct, जो डोम तत्व के साथ लिपटे, तो आप इस सवाल का जवाब भी this vs $(this) जाँच कर सकते हैं

इस Attr() की तरह प्रयास करें। मिलान किए गए तत्वों के सेट में पहले तत्व के लिए एक विशेषता का मान प्राप्त करें।

$(document).ready(function() { 
    $(".inputs").click(function() { 
     alert(" or " + $(this).attr("id")); 

    }); 
}); 
87

$(this) और this ही नहीं हैं। पहला आपके तत्व के चारों ओर लिपटे एक jQuery ऑब्जेक्ट का प्रतिनिधित्व करता है। दूसरा सिर्फ आपका तत्व है। id संपत्ति तत्व पर मौजूद है, लेकिन jQuery ऑब्जेक्ट नहीं है।

  1. पहुँच तत्व पर संपत्ति सीधे:

    $(this).attr("id")

  2. :

    this.id

  3. यह jQuery वस्तु से पहुंच इस तरह के रूप में, आप कुछ ही विकल्प हैं

    ऑब्जेक्ट को jQuery से बाहर खींचें:

    $(this).get(0).id; // Or $(this)[0].id

  4. event वस्तु से id प्राप्त करें:

    जब घटनाओं उठाए गए हैं, उदाहरण के एक क्लिक घटना के लिए, वे महत्वपूर्ण जानकारी और संदर्भ के आसपास उन लोगों के साथ ले। उपरोक्त आपके कोड में, आपके पास एक क्लिक ईवेंट है। इस ईवेंट ऑब्जेक्ट में दो आइटमों का संदर्भ है: currentTarget और target

    target का उपयोग करके, आप इस घटना को उठाए गए तत्व के id प्राप्त कर सकते हैं। currentTarget आपको बस बताएगा कि वर्तमान में कौन सा तत्व वर्तमान में बुलबुला कर रहा है। ये हमेशा एक ही नहीं होते हैं।

    $("#button").on("click", function(e){ console.log(e.target.id) });

इन सब के

, सबसे अच्छा विकल्प है जब तक आप नेस्टेड घटनाओं की एक श्रृंखला में लगे रहे हैं, बस अपने आप this से सीधे इसे उपयोग करने के लिए है, तो यह सबसे अच्छा हो सकता है का उपयोग करने के event प्रत्येक नेस्टेड ईवेंट का ऑब्जेक्ट (उन्हें सभी अद्वितीय नाम दें) उच्च या निम्न स्कोप में तत्वों को संदर्भित करने के लिए।

+6

स्पष्ट रूप से एक लोकप्रिय पर्याप्त सवाल यह है कि जब मैं "$ (यह) jquery में जाता हूं तो यह नंबर एक खोज परिणाम था। और आपका जवाब सही था और मेरी मदद की। मैं .attr() विधि के साथ गया और यह एक आकर्षण की तरह काम किया। धन्यवाद! – hardba11

+3

यह सही उत्तर क्यों नहीं है? – Pier

+0

@Pier वास्तव में यह सबसे अच्छा जवाब है, लेकिन केवल सही नहीं है। – yeyo

2

उपयोग इस actiion

$(document).ready(function() { 
var a = this.id; 

alert (a); 
}); 
संबंधित मुद्दे