尝试设置.click()处理程序时意外触发

Unexpected firing when trying to set .click() handler

本文关键字:程序 意外 处理 设置 click      更新时间:2023-09-26

我正试图将一个事件附加到链接的单击处理程序中。我可以通过href元素来选择元素,但当我在Javascript控制台中输入以下代码时,会触发事件,而不是添加事件处理程序:

$('a[href="example.com"]')[0].click(console.log("Message"))

我已经阅读了.click((的文档,其中指出用参数调用.click不应该触发事件,并且不确定为什么会发生这种情况。

您正在尝试调用不存在的HTMLELement.click()

当您对jQuery对象执行[some number]时,将返回相应的HTMLElement。但.click()jQuery的函数,而不是HTMLElement的函数。此外,您应该将代码封装在一个匿名函数中。

这样做:

$('a[href="example.com"]').click(function(){
    console.log("Message")
});

使用HTMLELement,您可以这样做:

$('a[href="example.com"]')[0].onclick =  function(){
  console.log("Message")
}

但我不建议采用上述方法。只是说上面的也存在。

如果忘记编写函数,则需要将代码封装在函数中。试试这个,

$('a[href="example.com"]').click(function(){console.log("Message")})

Click是jQuery的一个事件,所以当您通过$选择元素时,它会返回jQuery对象,您可以对该对象调用进一步的jQuery事件。但是当您编写[0]时,它返回DOM元素,并且没有点击事件处理程序。