jQuery - 调用.trigger('click')vs .click()

3dg*_*goo 7 javascript jquery

在jQuery中,触发click等事件的更好方法是什么?使用该.trigger('click')功能还是致电.click()

我总是通过使用触发这个事件,.click()但突然决定也许我应该使用.trigger('click').

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

我检查了jquery api,搜索了其他stackoverflow帖子[1] [2],我看不出有任何理由使用其中一个.

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

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

Ja͢*_*͢ck 10

如果您正在使用.trigger(),则具有能够传递其他参数的优点,而.click()必须在没有任何参数的情况下调用.

取自文档:

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

'Custom'并且'Event'被传递到事件处理程序,param1param2分别

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


Ale*_*x W 7

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

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

$("#element")[0].click();
Run Code Online (Sandbox Code Playgroud)

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

$("#element")[0].trigger('click');
Run Code Online (Sandbox Code Playgroud)

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

请注意$('#element')[0].click();,在某些元素上无法在Safari中使用.您需要使用变通方法.