/ / अनबाइंड jquery ईवेंट केवल एक बार काम करता है - जावास्क्रिप्ट, jquery

Unbind jquery घटना केवल एक बार काम करती है - जावास्क्रिप्ट, jquery

मेरे पास एक फुलस्क्रीन गूगल मैप है और फिर मेरे पास एक पॉपअप है। क्या मैं चाहता हूँ कि जब मैं किसी भी चीज़ पर क्लिक करूँ तो पॉपअप गायब हो जाता है या अगर मैं esc दबाता हूँ।

नीचे दिया गया कोड केवल एक बार काम करता है। मैं पॉपअप को खोल सकता हूं और इसे बंद कर सकता हूं लेकिन फिर यह "टी ओपन" फिर से जीता।

   var hideBlogContent = function () {
$(document).on("click", function (e) {
if ($(e.target).closest($("#blogpost")).length === 0) {
$("#blogpost").hide();
$(document).unbind();
$(document).off();
}
});

$(document).on("keydown", function (e) {
if (e.keyCode === 27) { // ESC
$("#blogpost").hide();
$(document).unbind();
$(document).off();
}
});

मैं इसे हर बार कैसे काम कर सकता हूं?

उत्तर:

उत्तर № 1 के लिए 1

नाम स्थान का उपयोग करें, के लिए प्रलेखन की जाँच करें on() अधिक देखने के लिए .. वर्तमान में अपने .off() फ़ंक्शन दस्तावेज़ पर सभी बाइंडिंग बंद कर रहा है। लेकिन नेमस्पेस के साथ आप एक विशिष्ट ईवेंट बाइंडिंग को बंद कर सकते हैं।

$(document).on("click.closeMap", function (e) {
if ($(e.target).closest($("#blogpost")).length === 0) {
$("#blogpost").hide();
$(document).off("click.closeMap");
}
});

$(document).on("keydown.closeMap", function (e) {
if (e.keyCode === 27) { // ESC
$("#blogpost").hide();
$(document).off("keydown.closeMap");
}
});

इसके अलावा, unbind() यहाँ बेमानी थी।