I have a simple table:e.stopPropagation() अपेक्षित के रूप में काम नहीं कर रहा है?
टी.आर. <tr onclick='alert("row");'>
है और बटन है:
$("body").on('click',".b",function (e){
alert('button');
e.stopPropagation();
});
हालांकि - हालांकि मैं लिखा e.stopPropagation();
यह अभी भी अलर्ट: "पंक्ति, बटन"।
अब, मुझे पता है कि ईवेंट हैंडलर body
से जुड़ा हुआ है और चयनकर्ता (बटन पर इसके खिलाफ चेक किया गया है क्लिक करें प्रारंभ और शरीर के लिए ऊपर ले जाने के लिए, बस करने के लिए $.live
उपयोग की तरह लेकिन document
के खिलाफ ...)।
लेकिन जांच button
पर क्लिक करें और पर पर क्लिक करें।
ऐसा लगता है कि जब मैं पर क्लिक कर रहा हूँ, यह "body"
को प्रसारित और (क्योंकि मैं इसे करने के लिए ईवेंट हैंडलर संलग्न) जबकि शरीर अप करने के लिए अपनी तरह से यह TR
पर क्लिक सक्रिय करता है।
यहां क्या हो रहा है? मैं अपना कोड कैसे रख सकता हूं (शरीर से संलग्न) और अभी भी "बटन" की चेतावनी है।
पी।
मैं जानता हूँ कि मैं बस कर सकते हैं:
$(".b").on('click',function (e){
alert('button');
e.stopPropagation();
});
लेकिन मैं जानना चाहता है कि मेरे वर्तमान कोड does not काम करना चाहते हैं (!)।
आप को समझने के लिए समस्या यह है कि आप शरीर के लिए ईवेंट हैंडलर देते है कि लगता है, यह आप क्या स्पष्ट नहीं कर रहा है ' फिर पूछना –
@dystroy मैंने शरीर को हैंडलर लगाया। हाँ। लेकिन मैंने यह भी कहा - "प्रचार रोको।" इसलिए IMHO इसे केवल "पंक्ति" को सतर्क करना चाहिए। और वहां से - ऊपर जाने से रोकें। प्रतिनिधिमंडल तक पहुंचने के लिए –
प्रतिनिधिमंडल का प्रचार प्रसार। Thats क्यों एक घटना जो ऑनलोड घटना के रूप में बुलबुले (प्रचार) नहीं है प्रतिनिधिमंडल के साथ उपयोग नहीं किया जा सकता है। –