首次点击

时间:2015-12-18 11:51:50

标签: 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");
    })
  })
});

1 个答案:

答案 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;
&#13;
&#13;

在此示例中,单击按钮会不断添加&#34;!&#34;,同时&#34;?&#34;只添加一次。其他处理程序不受影响。