我正在尝试将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”时我做错了什么?
答案 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,不要试图通过检查属性值来测试它。