2010-06-01 9 views
7

मैं किसी विशेष कंटेनर के अंदर मौजूद सभी तत्वों के लिए सभी ईवेंट हैंडलर को अनबिंड करने का प्रयास कर रहा हूं। एक डीवी की तरह। लेकिन उन घटनाओं को jQuery का उपयोग न करने के लिए बाध्य/पंजीकृत किया गया है। कुछ onclick="...." के साथ मैन्युअल तरीके से बाध्य हैं या नियमित देशी जावास्क्रिप्ट का उपयोग कर रहे हैं।क्या jQuery .unbind() विधि केवल jQuery बनाई गई घटनाओं पर काम करती है?

लेकिन जब मैं इस

$('#TheDivContainer').find('div,td,tr,tbody,table').unbind(); 

की तरह कुछ करना यह काम करने के लिए प्रकट नहीं होता। जो मुझे विश्वास दिलाता है कि .unbind() केवल तभी काम करता है जब घटनाओं को मूल रूप से jQuery द्वारा बाध्य किया गया हो।

क्या यह सच है? क्या तत्वों के समूह से सभी घटनाओं को अनबाइंड करने का कोई और तरीका है?

धन्यवाद!

उत्तर

7

आप सही हैं। API में के रूप में:

कि .bind साथ संलग्न किया गया कोई भी हैंडलर() .unbind से हटाया जा सकता()। सभी उपयुक्त घटना प्रकार के लिए

$('#TheDivContainer').find('div,td,tr,tbody,table') 
    .unbind('click') 
    .attr('onclick', ''); // edited to change null to '' 

आदि:

3

तुम हमेशा ऐसा कर सकता है।

+0

मैं अपने सुझाव थक ... उदासी यह – 7wp

+0

काम नहीं करता है - यह मेरे लिए काम करता है - यह परीक्षण पृष्ठ देखें: http://gutfullofbeer.net/unbind.html - आप एक खाली स्ट्रिंग के साथ 'attr()' को कॉल करने का प्रयास कर सकते हैं क्योंकि शून्य के बजाए दूसरे पैरामीटर के रूप में! – Pointy

3

Unbind केवल jQuery पर काम करेंगे सभी तरीकों कि यह करता है के रूप में की घटनाओं बनाया (addEventListener, और attachEvent) दोनों नोड, घटनानाम, और एक तर्क के रूप हैंडलर की आवश्यकता है। bind आप के लिए इन भंडारण की देखभाल ..

लेता है वैसे, dom0 शैली घटना listerens (.foo = function(...) केवल द्वारा null की तरह कुछ और करने के लिए एक ही संपत्ति की स्थापना द्वारा हटाया जा सकता है।

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