2011-04-02 11 views
7

मैं नीचे दिए गए कोड के माध्यम से क्लिक किए गए ऑब्जेक्ट नाम को पुनर्प्राप्त करने का प्रयास कर रहा हूं, लेकिन मुझे केवल [ऑब्जेक्ट ऑब्जेक्ट] मिलता है, मैं ऑब्जेक्ट का नाम कैसे प्राप्त कर सकता हूं?jquery: ऑब्जेक्ट का नाम प्राप्त करें?

<a href="#" class="clickme">click</a> 

    $('.clickme').click(function(){ 
     alert($(this)); 
     return false; 
    }); 

मैं अपने ऑब्जेक्ट नाम के रूप में '.clickme' प्राप्त करना चाहता हूं।

धन्यवाद।

संपादित करें: मदद लोगों के लिए

धन्यवाद। खेद है कि स्पष्ट नहीं होने के लिए।

जब मैं इस jquery क्लिक() को एक अनुकूलित फ़ंक्शन या प्लगइन में बदलता हूं तो मैं ऑब्जेक्ट का नाम गतिशील रूप से प्राप्त करना चाहता हूं।

हां, तो

<a href="#" class="clickme">click</a> 

     $('.clickme').click(function(){ 
      alert($(this)); 
      return false; 
     }); 

मैं अपने वस्तु नाम के रूप में '.clickme' प्राप्त करना चाहते हैं।

और,

<a href="#" id="clickme">click</a> 

     $('#clickme').click(function(){ 
      alert($(this)); 
      return false; 
     }); 

मैं अपने वस्तु नाम के रूप में '#clickme' प्राप्त करना चाहते हैं।

तो आप कभी-कभी नोटिस करते हैं कि मैं आईडी नाम प्राप्त करना चाहता हूं लेकिन कभी-कभी मैं कक्षा का नाम ऑब्जेक्ट नाम के रूप में प्राप्त करना चाहता हूं।

उत्तर

7

jQuery एक आंतरिक संपत्ति selector कि क्या आप देख रहे हैं खोजने के लिए इस्तेमाल किया जा सकता है: हालांकि आप click(function(e){}) के भीतर इस उपयोग नहीं कर सकते, क्योंकि आप का उपयोग कर फिर से चुनें करने के लिए है

$('.clickme').selector == '.clickme'; 
$('.clickme').find('a').selector == '.clickme a'; 

this:

$('.clickme').click(function(e){ 
    alert($(this).selector); // alerts nothing 
}); 

हालांकि, जब आप क्लिक समारोह बनाते हैं तो आप एक चर करने के लिए उस तत्व निर्दिष्ट करेंगे और भीतर यह देख सकते हैं:

var $cm = $('.clickme').click(function(e){ 
    alert($cm.selector); // alerts '.clickme' 
}); 
+1

का उल्लेख किया है, जो पूरी तरह से अंतिम उदाहरण से प्यार करता है। बाद में अन्य सशर्त बयान में पढ़ने और उपयोग करने में आसान है। – blackhawk

3

वह कक्षा है। वस्तु का नाम नहीं है और निश्चित रूप से कुछ अद्वितीय नहीं है।

आप इसे this.className या $(this).attr('class') का उपयोग करके प्राप्त कर सकते हैं।

यदि आप कुछ अद्वितीय चाहते हैं, तो id विशेषता का उपयोग करें और classid के साथ बदलें।

+2

'$ (यह) .attr ('class')' – tvanfosson

1

नाम या आईडी?

$('.clickme').click(function(){ 
    alert(this.id); // or $(this).attr('name') if you want the name 
    return false; 
}); 

क्या यह वास्तव में की तरह लग रहा है कि आप कक्षा चाहते हैं (हालांकि, मुझे यकीन है कि नहीं कर रहा हूँ क्यों जब से तुम चयनकर्ता के रूप में वर्ग का उपयोग किया है) है।

$('.clickme').click(function(){ 
    alert($(this).attr('class')); 
    return false; 
}); 
+0

मुझे इवेंट ऑब्जेक्ट का उपयोग करके e.target.id का उपयोग करना था क्योंकि क्विंसी ने – tettoffensive

1

एक वैकल्पिक घटना वस्तु

$('.clickme').click(function(e){ 
    alert($(e.target).attr('class')); 
    return false; 
}); 
+0

धन्यवाद। क्या होता है यदि यह कक्षा के बजाय आईडी है। क्या मैं इसे गतिशील बना सकता हूं। कृपया स्पष्टीकरण के लिए उपरोक्त मेरे संपादन की जांच करें। धन्यवाद। – laukok

3

यह सही प्रश्न करने के लिए, लेकिन एक मुझे मिल गया जब मैं वहाँ पाने का जवाब नहीं है का उपयोग कर - आप तो भी शायद ;-)

लघु जवाब: का उपयोग करें "this.name" जो की तुलना में "$ (this) .attr ('नाम')"

नमूना ही है:

$("*").click(function (event) { 
    event.stopPropagation(); 
    // Display the name of the clicked object 
    $(this).after("<span> " + this.name +" clicked! </span>"); 
    // Change the name for what you want (optional - just to show it's doable) 
    this.name = this.name + "X"; 
}); 
संबंधित मुद्दे