2013-07-01 4 views
6

दस्तावेज़ क्लिक करें घटना में कैसे करता है, तो लक्ष्य बटन तत्व ऊपर कोड सही थाJquery में लक्ष्य बटन कैसे ढूंढें?

$(document).click(function(e){ 
    if(e.target.nodeName.toLowerCase() != 'button') 

चाहे है वापस जाने के लिए?

+4

खैर कि परीक्षण है कि यह _not_ एक बटन है, लेकिन आप सामान्य विचार सही मिल गया है। जब तक आपको लगता है कि यह पर्याप्त jQuery विधियों का उपयोग नहीं करता है? – nnnnnn

+1

http://stackoverflow.com/questions/6071095/get-the-element-triggering-an-onclick-event-in-jquery का डुप्लिकेट? – Drakoumel

उत्तर

17

आप केवल

$(document).click(function(e) { 
    if ($(e.currentTarget).is(":button")) { 
    // Do things 
    } 
}); 

तुम क्यों :button बजाय button का प्रयोग करेंगे कर सकते हैं?

इस तरह से आप यह पता लगा सकते हैं कि यह <input type="button"> या <button> टैग है, साथ ही अन्य इनपुट प्रकार जो बटन के रूप में प्रस्तुत करते हैं।
यदि आप इस चयनकर्ता का उपयोग करने के बारे में अनिश्चित हैं, तो :button selector jQuery दस्तावेज़ों की जांच करें।

+3

'यह' इस उदाहरण में कभी भी बटन नहीं होगा। –

+2

अरे, इसके बारे में भूल गए। फिक्स्ड। – gustavohenke

+1

बटन चयनकर्ता जोड़ने के लिए बड़ा प्लस। उस – Drkawashima

2
$(document).click(function(e){ 
    if($(this).is('button')){ 
      //your codes.. 
    } 

}); 
+2

से बटन का उपयोग कर रहा हूं, यह यहां दस्तावेज़ को संदर्भित करता है। और इनपुट प्रकार बटन के बारे में क्या? यहां तक ​​कि हम नहीं जानते कि ओपी 'बटन' कहता है। –

3

तेज़:

$(this).is('button'); 
+10

वास्तव में कच्चे जेएस तेजी से होना चाहिए। आपका समाधान छोटा है :) –

+1

क्या आप इससे अधिक अर्थपूर्ण हो सकते हैं? : डी –

+0

@AurelioDeRosa सच :) jQuery हमेशा लिखने के लिए तेज़ है :) मेरा मतलब यह था। और मैं आलसी था: पी – TecHunter

3

आप एक selecor के खिलाफ दिए गए तत्व का परीक्षण करने के .is उपयोग कर सकते हैं()।

इसके अलावा, आप :button का भी उपयोग करेंगे परीक्षण करने के लिए, यदि आप केवल तत्व बटन चाहते हैं तो आप उपयोग कर सकते हैं is('button') तत्व चयनकर्ता

$(document).click(function(e) { 
    if ($(e.target).is(":button")) { 
    //check 
    } 
}); 
1

शुद्ध जे एस FTW!

e.target.nodeName === 'BUTTON' 

या आप डोम तत्वों

if(['BUTTON', 'INPUT'].indexOf(e.target.nodeName) !== -1){ 
    // clicked on button/input 
} 

यह गलती नहीं कर रहा है की सरणी है। एचटीएमएल के लिए पूंजी पत्र।

एक्सएचटीएमएल (या कोई अन्य एक्सएमएल प्रारूप) में, टेक्स्ट_फील्ड का मान "div" पढ़ेगा। हालांकि, एचटीएमएल में, टेक्स्ट_फील्ड का मान "डीआईवी" पढ़ेगा, क्योंकि डोड एचटीएमएल दस्तावेज़ों के रूप में ध्वजांकित एचओएम में एचटीएमएल तत्वों पर ऊपरी मामले में नोडनाम और टैगनाम वापसी।

https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeName

संबंधित मुद्दे