JS使用不同的方法设置onclick属性

时间:2013-10-21 12:20:42

标签: javascript jquery html onclick

我正在尝试将onclick属性设置为这样的锚:

$("a").click(function(e) {
    $(this).onclick = "ItWorks";
    output = "JS onclick attempt: my onclick is: <strong>" + $(this).onclick + "</strong>";
    $(this).prop("onclick", "ItWorks");
    output += "<br />jQuery prop() attempt: my onclick is: <strong>" + $(this).prop("onclick") + "</strong>";
    $(this).attr("onclick", "ItWorks");
    output += "<br />jQuery attr() attempt: my onclick is: <strong>" + $(this).attr("onclick") + "</strong>";

    alert(output);
    e.preventDefault();
}); 

我尝试过纯JS,jQuery prop()和attr()函数。正如您在example上看到的那样,只有.attr()函数可以正常工作。

有人可以告诉我,其他两次尝试返回“null”或“undefined”时我做错了什么?

2 个答案:

答案 0 :(得分:1)

为什么不让它变得更容易:

<a href="javascript:void(0)" onclick='clickEvent("a")'>link</a>
<a href="javascript:void(0)" onclick='clickEvent("a")'>link</a>

function clickEvent(event)  {
   if (event == "a") {
     output = "event a clicked";
   } elseif (event == "b") {
     output = "event b clicked";
   }
   alert(output);

}

答案 1 :(得分:1)

  

$(this).onclick = "ItWorks";

在JQuery对象上设置属性,而不是DOM节点。

  

$(this).prop("onclick", "ItWorks");

将属性设置为字符串,但它需要一个函数...并且该属性不会像对某些其他属性那样直接映射到属性值。

  

$(this).attr("onclick", "ItWorks");

将属性设置为字符串,但不是在以JS执行时将执行任何操作的字符串。

如果你想设置一个事件处理程序并使用jQuery,那么使用the on method,不要试图通过检查属性值来测试它。