在jQuery中,触发事件(如单击)的更好方法是什么?使用.trigger('click')函数或调用.click()
我一直使用.click()触发此事件,但突然决定也许我应该使用.trigger('click')。
我使用这些事件触发器来触发用.on('click', function(){...})创建的事件侦听器。
我已经检查了jquery api,搜索了[ 1 ] [ 2 ]的其他stackoverflow帖子,我看不出有什么理由使用其中一个。
我更倾向于使用.trigger()来保持所有事件触发的一致性,因为它可以用来调用任何事件,包括自定义事件。但似乎.trigger()并不是在所有情况下都能工作。
触发事件的最佳方式是什么?.trigger('click')还是.click()
发布于 2012-11-22 10:18:44
如果您使用的是.trigger(),那么您的优势在于可以传递额外的参数,而.click()必须在没有任何参数的情况下调用。
摘自documentation
$('#foo').bind('custom', function(event, param1, param2) {
alert(param1 + "\n" + param2);
});
$('#foo').trigger('custom', ['Custom', 'Event']);'Custom'和'Event'分别作为param1和param2传递给事件处理程序
除此之外,.click()与其他基于参数数量实现get / set的函数不同,因为它实现的是触发器/ set。对我来说,使用专用的.trigger()更符合逻辑。
发布于 2014-02-21 00:06:48
在使用jQuery方法时需要注意的一点是,.click()除了是一种jQuery方法外,还是一种可以在native JavaScript method元素上调用的DOM Level 2 HTML。
有一个地方可能会让人感到困惑,那就是你有一个这样的选择器:
$("#element")[0].click();在这里,您实际上是在调用DOM元素上的方法。例如,如果您尝试
$("#element")[0].trigger('click');您将得到一个错误,即该元素没有定义trigger方法。
请注意,在某些元素上,$('#element')[0].click();不能在Safari中工作。您需要使用一种变通方法。
https://stackoverflow.com/questions/13505003
复制相似问题