我调用外部js文件。这个js文件已经有(document).click
函数。我希望在主要的js中有一个(document).click
。
外部js:
$(document).click(function() {
//do stuff
});
我不使用全局变量。在外部文件中使用$(document).click
函数以及在主js中添加$(document).click
函数的最佳方法是什么?
答案 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');