jQuery – 调用.trigger(’click’)vs .click()

在jQuery中,触发click等事件的更好方法是什么? 使用.trigger('click')函数或调用.click()

我总是通过使用.click()来触发此事件,但突然决定我应该使用.trigger('click')代替。

我使用这些事件触发器来触发使用.on('click', function(){...})创建的事件侦听器。

我检查了jquery api ,搜索了其他stackoverflowpost[1] [2] ,我发现没有理由使用其中一个。

我更倾向于使用.trigger()来保持所有事件触发一致,因为这可以用于调用任何事件,包括自定义事件。 但似乎.trigger()在所有情况下都不起作用。

触发事件的最佳方式是什么? .trigger('click').click()

如果您正在使用.trigger()那么您可以传递其他参数,而必须在没有任何参数的情况下调用.trigger()

取自文档 :

 $('#foo').bind('custom', function(event, param1, param2) { alert(param1 + "\n" + param2); }); $('#foo').trigger('custom', ['Custom', 'Event']); 

'Custom''Event'分别作为param1param2传递给事件处理程序

除此之外, .click()与基于参数数量实现get / set的其他函数不同,因为它实现了trigger / set。 对我来说,使用专用的.trigger()更合乎逻辑。

使用jQuery方法时需要注意的一点是,除了作为jQuery方法之外, .click()也是一个DOM Level 2 本机JavaScript方法 ,可以在HTML元素上调用,例如元素。

如果你有一个像这样的选择器,这可能会让人感到困惑:

 $("#element")[0].click(); 

在那里,您实际上是在DOM元素上调用该方法。 例如,如果你尝试过

 $("#element")[0].trigger('click'); 

你会得到一个错误,该元素没有定义trigger方法。

请注意$('#element')[0].click(); 某些元素在Safari中不起作用。 您将需要使用变通方法。