在页面上设置了一些简单的功能。最初,我想用一些显示叠加层的功能替换超链接点击的默认操作。
显示叠加层后,我想删除放置在超链接上的事件监听器,以便它恢复到以前的状态(我相信这里还有另一个事件监听器,我不想在删除我的事件监听器时删除这个事件监听器) )。覆盖层中有另一个按钮,单击该按钮时,应触发该按钮的初始功能。
我尝试过 .off() jquery 方法,但这似乎阻止了“.mmclose”按钮的工作。
不太确定我哪里出了问题..
// placing event listener on initial link
$("#utility_0_HyperLinkLogout").click(function() {
// removing event listener(?)
$("#utility_0_HyperLinkLogout").off("click");
// preventing default button behavior
event.preventDefault();
//overlay replacing original content
I62originalContent.hide();
$("#mmi62wrapper").fadeIn("slow", function() {
// new event listener placed on button within overlay (as callback)
$(".mmclose").click(function() {
//new button should now trigger original buttons original functionality?
$("#utility_0_HyperLinkLogout").trigger("click");
})
})
});
最佳答案
您可以使用 jQuery .one
方法附加一个仅执行一次的处理程序。您无需再担心删除此处理程序。
检查这个例子:
$(".myClass").click(function() {
this.innerText += "!";
});
$("#myId").one('click', function() {
this.innerText += "?";
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="myClass" id="myId">Click me twice</button>
在这个例子中,点击按钮会不断添加“!”,而“?”仅添加一次。其他处理程序不受影响。
关于javascript - 首次单击后删除放置的 jquery 单击事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34355068/