如何点击event.target直播?

时间:2017-08-21 02:25:27

标签: javascript jquery button click

我正在开发弹出按钮,所以我设计了代码

$(event.target).click(function() { window.open("/widget/dialog", "", ""); });

然而,当我第一次点击时它不起作用。我第二次点击时效果很好。我怎么解决这个问题?

3 个答案:

答案 0 :(得分:0)

  

但是,当我第一次点击时它不起作用。

那是因为第一次执行处理程序时,绑定(不执行!)调用window.open("/widget/dialog", "", "")的另一个事件处理程序。

现在您有两个事件处理程序绑定到该元素,并且当您再次单击时将执行这两个事件处理程序。但这也意味着另一个事件处理程序将被绑定,因此在第二次单击后,三个事件处理程序将绑定到该元素。

如果您希望它“第一次”工作,那么在“外部”事件处理程序中执行您想要执行的操作。不要在处理程序中绑定另一个事件处理程序。忘掉$(event.target).click(...)

Template.Button.events({
  'click button': function(event, template) {
    window.open("/widget/dialog", "");
  },
});

答案 1 :(得分:0)

第三次点击时打开2个窗口?(可能被浏览器阻止)然后你就不能理解什么是事件监听器。

我猜您的代码是这样的:(因为代码片段不允许弹出窗口,我使用console.log显示)



$(function() {
  $("#hh").click(function() {
    $(event.target).click(function() {
      console.log("Hello!");
    });
  })
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="hh" type="button" value="google" />
&#13;
&#13;
&#13;

如果是这样,你就会遇到麻烦,因为你在事件监听器中绑定事件监听器。

详细说来,我先说一下名字:外$("#hh").click叫做ELA(事件监听器A),而内$(event.target).click是ELB。

  1. 在第一次点击之前,在按钮上:ELA,因此在点击时,ELB被绑定。

  2. 第一次点击后,在第二次之前,按钮:ELA + ELB,弹出,另一个ELB被绑定。

  3. 第2 - 第3,ELA + ELB * 2,点击原因2弹出窗口,另一个ELB绑定。

  4. 请参阅?这会导致恐怖。

    正确的方法是:

    &#13;
    &#13;
    $(function() {
      $("#hh").click(function() {
        console.log("Hello!");
      })
    })
    &#13;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <input id="hh" type="button" value="google" />
    &#13;
    &#13;
    &#13;

    每次点击都会生成一个console.log

答案 2 :(得分:0)

尝试使用以下示例。
希望这会有所帮助。我已将.target移至活动

点击此链接https://jsfiddle.net/beljems/Lpj2fanw/15/

JQUERY

var event = $('a');

$(event).click(function() {
  window.open("/widget/dialog", "", "");
});

HTML

<a href="#">Click Here</a>