用 jQuery 获取“onclick”的值?
Posted
技术标签:
【中文标题】用 jQuery 获取“onclick”的值?【英文标题】:get the value of "onclick" with jQuery? 【发布时间】:2010-11-27 18:53:18 【问题描述】:是否可以通过jQuery获取A标签的onClick属性的当前值?
例如,我有:
<a href="http://www.google.com" id="google" onclick="alert('hello')">Click</a>
我想获取 onclick 代码,以便我可以将其存储起来以供以后使用(因为我将在一段时间内更改 onclick 事件)。
是否可以这样做:
var link_click = $("#google").onclick;
或:
var link_click = $("#google").click;
以便稍后在我的代码中我可以重新应用该代码,或者在必要时 eval() 吗?
【问题讨论】:
【参考方案1】:这对我有用
var link_click = $('#google').get(0).attributes.onclick.nodeValue;
console.log(link_click);
【讨论】:
如果您确实需要访问 onclick 属性的文本而不是绑定的函数或事件本身,这就是您要使用的答案。但是,您应该将 .get(0).attributes.onclick.nodeValue 替换为 .get(0).attributes.onclick.value,因为 nodeValue 已被弃用。【参考方案2】:我不太确定如何在 jQuery 中执行此操作...但这可行:
var x = document.getElementById('google').attributes;
for (var i in x)
if (x[i].name == "onclick") alert(x[i].firstChild.data);
但正如 Harshath 所说,如果您使用事件侦听器会更好,因为删除此函数并将其添加回 onclick 事件可能会很麻烦。
【讨论】:
【参考方案3】:你能解释一下你到底想完成什么吗?一般来说,您永远不必从 html 元素中获取 onclick 属性。此外,您不应在元素本身上指定 onclick。而是使用 JQuery 动态设置 onclick。
但据我了解,您尝试在两种不同的 onclick 功能之间切换。更好的办法是实现您的 onclick 函数,使其能够同时处理这两种情况。
$("#google").click(function()
if (situation)
// ...
else
// ...
);
【讨论】:
【参考方案4】:$('#google').attr('onclick') + ""
但是,Firebug 显示这会返回一个函数“onclick”。您可以稍后使用以下方法调用该函数:
(new Function ($('#google').attr('onclick') + ';onclick();'))()
...或使用正则表达式去除function
并仅获取其中的语句。
【讨论】:
$('#google').attr('onclick') 保存onclick
属性的值(这是一个字符串)。但是,由于浏览器以不同的方式处理事件属性,因此它们返回“function onclick() alert('hello') ”。因此,如果您想直接调用该函数,则必须剥离 function()
或立即调用它。【参考方案5】:
mkoryak
是正确的。
但是,如果使用更现代的方法(不使用 onclick
)将事件绑定到该 DOM 节点,则此方法将失败。
如果这是您真正想要的,请查看 this question 及其接受的答案。
干杯!
我再次阅读了您的问题。
我想告诉你的是:不要使用onclick
、onkeypress
之类的东西来绑定事件。
使用addEventListener()
等更好的方法将使您能够:
-
为特定事件添加多个事件处理程序
有选择地移除一些听众
您可以使用jQuery
包装器,例如$('selector').click()
,而不是实际使用addEventListener()
。
再次干杯!
【讨论】:
【参考方案6】:我从来没有这样做过,但它会这样做:
var script = $('#google').attr("onclick")
【讨论】:
可以获取onclick属性。但并不总是点击事件处理程序。以上是关于用 jQuery 获取“onclick”的值?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 jquery 使用简单形式的 ruby on rails 获取选定的值