在页面上设置了一些简单的功能。最初,我想用一些将显示叠加的功能替换超链接点击的默认操作。
显示叠加后我想删除我放在超链接上的事件监听器,以便它恢复到以前的状态(我相信这里有另一个事件监听器,我不想删除这个,同时删除我的)。在叠加层中是另一个按钮,单击该按钮时,应触发按钮的初始功能。
我尝试了.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");
})
})
});
答案 0 :(得分:1)
您可以使用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>
&#13;
在此示例中,单击按钮会不断添加&#34;!&#34;,同时&#34;?&#34;只添加一次。其他处理程序不受影响。