2010-05-04 4 views
22

ठीक है, इसलिए मैं सोच रहा हूं कि jQuery में एक इनलाइन ऑनक्लिक ईवेंट को कैसे अनइंड करना है। आपको लगता है कि .unbind() काम करेगा, हालांकि यह नहीं करता है।अनलाइनिंग इनलाइन पर क्लिक करें jQuery में काम नहीं कर रहा है?

खुद के लिए यह परीक्षण करने के लिए निम्न HTML और जावास्क्रिप्ट के साथ चारों ओर खेलने:

function UnbindTest() { 
    $("#unbindTest").unbind('click'); 
} 

function BindTest() { 
    $("#unbindTest").bind('click', function() { alert("bound!"); }); 
} 


<button type="button" onclick="javascript:UnbindTest();">Unbind Test</button> 
<button type="button" onclick="javascript:BindTest();">Bind Test</button> 
<button type="button" onclick="javascript:alert('unbind me!');" id="unbindTest">Unbind Button</button> 

आप देख सकते हैं, unbinding इनलाइन onclick घटना निकल नहीं है ... लेकिन यह निकल पड़ता क्लिक करें घटना जोड़ा bind() के साथ।

तो, मैं अगर वहाँ इनलाइन onclick कर की कमी की घटनाओं निम्नलिखित निकल लिए एक रास्ता है सोच रहा हूँ: unbinds

$("#unbindTest").get(0).onclick = ""; 

धन्यवाद

उत्तर

34

jQuery का अनबिंड onclick विशेषताओं पर काम नहीं करेगा - यह केवल bind के माध्यम से जोड़े गए कार्यों के लिए काम करता है और इस प्रकार $(...).data('events') में उपलब्ध है। onclick को हटाने के लिए आपको removeAttr का उपयोग करना होगा।

अधिक जानकारी के लिए this question पढ़ें।

+3

स्नैप ... $ ("# unbindTest")। RemoveAttr ('onclick'); काम किया। – Polaris878

4

unbindbind के साथ पंजीकृत ईवेंट हैंडलर्स, लोगों के माध्यम से नहीं सौंपा onclick या अन्य DOM0 विशेषताएँ। डॉक्स से:

कि .bind() के साथ संलग्न किया गया है किसी भी हैंडलर .unbind() से हटाया जा सकता।

संपादित: आप तत्व पर प्रासंगिक विशेषता को साफ़ करके dom0 संचालकों निकल। मुझे ऐसा करने का jQuery तरीका देखना पड़ा: removeAttr

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