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

时间:2014-06-06 17:07:44

标签: javascript jquery

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

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

我已阅读the docs for .click(),其中声明使用参数调用.click不应触发事件,并且不确定为什么会发生这种情况。

2 个答案:

答案 0 :(得分:4)

您正在尝试拨打.click() HTMLELement并且不存在。

当您在[some number]对象上jQuery时,将返回相应的HTMLElement。但.click()jQuery的函数,而不是HTMLElement的函数。您还应该将代码包装在匿名函数中。

这样做:

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

使用HTMLELement,您可以这样做:

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

但我不推荐上述方法。只是说上面也存在。

答案 1 :(得分:2)

你忘记编写函数,需要在函数中包装代码。试试这个,

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

Click是一个jQuery事件,所以当你选择元素$时,它会返回jquery对象,你可以在该对象上调用更多的jquery事件。但是当你编写[0]时,它会返回DOM元素,并且没有单击事件处理程序。