0

我正在尝试将 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() 函数。正如您在此示例中看到的那样,只有 .attr() 函数可以正常工作。

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

4

2 回答 2

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);

}
于 2013-10-21T12:58:34.463 回答
1

$(this).onclick = "ItWorks";

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

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

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

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

将属性设置为字符串,尽管在作为 JS 执行时不会执行任何操作。

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

于 2013-10-21T13:02:00.777 回答