मैं jQuery में "होवर" को कैसे अनबंड करूं?
यह काम नहीं करता:
$(this).unbind('hover');
मैं jQuery में "होवर" को कैसे अनबंड करूं?
यह काम नहीं करता:
$(this).unbind('hover');
जवाबों:
$(this).unbind('mouseenter').unbind('mouseleave')
या अधिक सफलतापूर्वक (धन्यवाद @ अनुदान अनुदान ):
$(this).unbind('mouseenter mouseleave')
वास्तव में, jQuery प्रलेखन में ऊपर दिखाए गए जंजीर उदाहरणों की तुलना में अधिक सरल दृष्टिकोण है (हालांकि वे ठीक काम करेंगे)
$("#myElement").unbind('mouseenter mouseleave');
JQuery 1.7 के रूप में, आप उपयोग करने में सक्षम हैं $.on()और $.off()ईवेंट बाइंडिंग के लिए, इसलिए होवर ईवेंट को अनबाइंड करने के लिए, आप सरल और टिडियर का उपयोग करेंगे:
$('#myElement').off('hover');
छद्म-घटना-नाम "होवर" का उपयोग "माउसेंटर मूसलीव" के लिए शॉर्टहैंड के रूप में किया जाता है, लेकिन पहले के jQuery संस्करणों में इसे अलग तरह से संभाला जाता था; आपको शाब्दिक ईवेंट नामों में से प्रत्येक को स्पष्ट रूप से निकालने की आवश्यकता है। $.off()अब का उपयोग करके आप एक ही शॉर्टहैंड का उपयोग करके दोनों माउस घटनाओं को छोड़ सकते हैं।
2016 संपादित करें:
फिर भी एक लोकप्रिय प्रश्न तो यह है कि नीचे दिए गए टिप्पणियों में @ Dennis98 के बिंदु पर ध्यान आकर्षित करने के लायक है jQuery 1.9+ में, "हॉवर" घटना को मानक "माउसेंटर मूसलीव" कॉल के पक्ष में चित्रित किया गया था । तो आपकी घटना बाध्यकारी घोषणा अब इस तरह दिखना चाहिए:
$('#myElement').off('mouseenter mouseleave');
$.off("hover")काम नहीं करता है। हालांकि, दोनों घटनाओं का उपयोग करना महान काम करता है।
$.off()अभी भी है, यह वर्तमान में अप्रिय घटनाओं की अनुशंसित विधि है। इसलिए अब आपको लिखने की जरूरत है $(element).off("mouseenter mouseleave");।
Unbind mouseenterऔर mouseleaveघटनाओं व्यक्तिगत रूप से या अनबाइंड तत्व (ओं) पर सभी घटनाओं।
$(this).unbind('mouseenter').unbind('mouseleave');
या
$(this).unbind(); // assuming you have no other handlers you want to keep
एक अन्य समाधान है .die () की घटनाओं जो उस के साथ संलग्न के लिए .live () ।
पूर्व .:
// attach click event for <a> tags
$('a').live('click', function(){});
// deattach click event from <a> tags
$('a').die('click');
आप यहाँ एक अच्छा refference पा सकते हैं: खोज jQuery .live () और .die ()।
(मेरे अंग्रेजी के लिए क्षमा करें: ">)
सभी मंडराना पर्दे के पीछे से माउसओवर और माउसआउट संपत्ति के लिए बाध्य है। मैं उन घटनाओं से आपके कार्यों को अलग-अलग बाँधूँगा और उन्मुक्त करूँगा।
उदाहरण के लिए, मान लें कि आपके पास निम्नलिखित HTML हैं:
<a href="#" class="myLink">Link</a>
तब आपका jQuery होगा:
$(document).ready(function() {
function mouseOver()
{
$(this).css('color', 'red');
}
function mouseOut()
{
$(this).css('color', 'blue');
}
// either of these might work
$('.myLink').hover(mouseOver, mouseOut);
$('.myLink').mouseover(mouseOver).mouseout(mouseOut);
// otherwise use this
$('.myLink').bind('mouseover', mouseOver).bind('mouseout', mouseOut);
// then to unbind
$('.myLink').click(function(e) {
e.preventDefault();
$('.myLink').unbind('mouseover', mouseOver).unbind('mouseout', mouseOut);
});
});
आप एक विशिष्ट ईवेंट हैंडलर को निकाल सकते हैं on, जिसका उपयोग करके संलग्न किया गया थाoff
$("#ID").on ("eventName", additionalCss, handlerFunction);
// to remove the specific handler
$("#ID").off ("eventName", additionalCss, handlerFunction);
इसका उपयोग करते हुए, आप केवल हैंडलर को हटा देंगे
एक और अच्छा अभ्यास, कई संलग्न घटनाओं के लिए एक नामस्थान सेट करना है
$("#ID").on ("eventName1.nameSpace", additionalCss, handlerFunction1);
$("#ID").on ("eventName2.nameSpace", additionalCss, handlerFunction2);
// ...
$("#ID").on ("eventNameN.nameSpace", additionalCss, handlerFunctionN);
// and to remove handlerFunction from 1 to N, just use this
$("#ID").off(".nameSpace");
मैंने इसे .hover () के लिए दूसरे तर्क (फ़ंक्शन) के रूप में काम किया
$('#yourId').hover(
function(){
// Your code goes here
},
function(){
$(this).unbind()
}
});
पहला फ़ंक्शन (तर्क .hover ()) माउसओवर है और आपके कोड को निष्पादित करेगा। दूसरा तर्क माउसआउट है जो #yourId से होवर ईवेंट को हटा देगा। आपके कोड को केवल एक बार निष्पादित किया जाएगा।
$.unbind()अपने आप से इस तरह की सभी घटनाओं को उस वस्तु से नहीं हटाएगा? किस मामले में आपकी $.click()घटनाओं जैसी चीजें अब विफल हो जाएंगी, है ना?