$(document).click来自两个地方

时间:2015-11-30 10:26:08

标签: javascript jquery

我调用外部js文件。这个js文件已经有(document).click函数。我希望在主要的js中有一个(document).click

外部js:

$(document).click(function() {
    //do stuff
});

我不使用全局变量。在外部文件中使用$(document).click函数以及在主js中添加$(document).click函数的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

你可以同时拥有两者。只要没有人停止传播,两个事件处理程序都将运行。

如果您仍有任何问题,请发布代码。

稍微扩大答案: 实际上有一种方法(错误的方式)来做一次只支持一个的点击事件处理程序。如果你这样做:

element.onclick = function () {alert('a')};

然后

element.onclick = function () {alert('b')};

你只会得到一个警告(说'b')。这就是为什么你永远不应该使用它。这是一个没人知道他们在做什么的时间的残余。现在是2015年,我们谈的越少越好。

现在,当您使用正确的方式注册事件处理程序时:

element.addEventListener('click', function () {alert('a')});
element.addEventListener('click', function () {alert('b')});

你会得到两个警报。

为了清除任何混淆,值得一提的是jQuery在您addEventListener$(element).click(f)内部使用相同的旧版$(element).on('click', f),或者它今天有效。

答案 1 :(得分:0)

  

您可以在文件上添加“click”事件,但问题是,何时   单击处理程序将触发的特定元素   同时如果我没有错,两个处理程序将以不同的方式工作   并且不应该同时开火。

     

最好的方法是使用具有不同事件名称空间的事件触发器。

$(document).on('click.func1',function(){
    func1();
});
$(document).bind('click.func2',function(){
   doStuff2();
});

然后,当您需要触发时,您可以选择订单。

 $(document).trigger('click.func1').trigger('click.func2');

或者您可以同时触发两个事件:

$(document).trigger('click');