2010-08-11 16 views
8

पर क्लिक समारोह मैं जब मैं बटन पर क्लिक करें, क्लिक करें टीआर घटना भी कहा जाता है इसjQuery - अक्षम करने पेरेंट तत्व

<table><tr><td></td><td><input type="button" name="button"></td></tr></table> 
<script> 
$('tr').click(function(){window.alert('tr');}) 
$(':input').click(function(){window.alert('input');}) 
</script> 

जैसी संरचना भी। पैरेंट तत्व पर क्लिक इवेंट अक्षम करने का कोई तरीका है? मुझे मिला एकमात्र समाधान मूल तत्व में वर्ग जोड़ना है और इसके क्लिक फ़ंक्शन के अंदर इसकी जांच करना है। उदाहरण के लिए :

<script> 
$('tr').click(function(){ if(!$(this).hasClass('disable')) { window.alert('tr'); } $(this).removeClass('disable'); }) 
$(':input').click(function(){window.alert('input'); $(this).closest('tr').addClass('disable');}) 
</script> 
+0

का उपयोग कर रहा ठीक उसी समस्या थी और यह समाधान आश्चर्यजनक रूप से मुश्किल है प्रचार की स्थिति की जांच कर सकते हैं। इस सवाल और उनके योगदान के लिए सभी उत्तरदाताओं से पूछने के लिए बहुत बहुत धन्यवाद। – MOnsDaR

उत्तर

14

उपयोग .stopPropagation()

$('tr').click(function(){ 
    window.alert('tr'); 
}); 
$(':input').click(function(e){ 
    e.stopPropagation(); 
    window.alert('input'); 
}); 

demo

+0

ऐसा लगता था जैसे यह बहुत आसान था, लेकिन एक आकर्षण की तरह काम करता है। –

+0

+1, प्रश्न पर टिप्पणी देखें – MOnsDaR

2

रोक प्रचार?

http://api.jquery.com/event.stopPropagation/

यह अपने माता-पिता के माध्यम से बुदबुदाती से क्लिक करें घटना नहीं कर पाएगा।

3

.स्टॉपप्रॉपैगेशन() काम करेगा लेकिन यदि आप पूरी घटना को रोकना नहीं चाहते हैं तो आप लक्ष्य मैच के जरिए इसे आग लगा सकते हैं।

See this thread

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