javascript - 首次单击后删除放置的 jquery 单击事件监听器

标签 javascript jquery events

在页面上设置了一些简单的功能。最初,我想用一些显示叠加层的功能替换超链接点击的默认操作。

显示叠加层后,我想删除放置在超链接上的事件监听器,以便它恢复到以前的状态(我相信这里还有另一个事件监听器,我不想在删除我的事件监听器时删除这个事件监听器) )。覆盖层中有另一个按钮,单击该按钮时,应触发该按钮的初始功能。

我尝试过 .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/

相关文章:

c# - 设置用户控件的默认事件

javascript - 滑动固定的div

javascript - 在 jQuery 中访问 Wikipedia API JSON 数据

javascript - 为什么我的网站在 IE 中是空白屏幕? (包括 IE9!)

javascript - StreamSets 将 Text 转换为 Json

javascript - 使用 jquery 检查多个文本区域字段的值,然后执行函数

javascript - 如何在javascript中实现鼠标拖动

java - 根据服务器的频率和启动设置任务的启动

javascript - 克隆节点上的 DOM 操作

javascript - 在显示之前替换任何 HTML 页面中的一些文本