用 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 及其接受的答案。

干杯!


我再次阅读了您的问题。 我想告诉你的是:不要使用onclickonkeypress之类的东西来绑定事件。

使用addEventListener() 等更好的方法将使您能够:

    为特定事件添加多个事件处理程序 有选择地移除一些听众

您可以使用jQuery 包装器,例如$('selector').click(),而不是实际使用addEventListener()

再次干杯!

【讨论】:

【参考方案6】:

我从来没有这样做过,但它会这样做:

var script = $('#google').attr("onclick")

【讨论】:

可以获取onclick属性。但并不总是点击事件处理程序。

以上是关于用 jQuery 获取“onclick”的值?的主要内容,如果未能解决你的问题,请参考以下文章

怎样用js或jquery操作span的单击事件?

如何使用 jquery 使用简单形式的 ruby​​ on rails 获取选定的值

jQuery获取相邻标签的值

jquery如何获取子标签的IDŀ

jQuery-shake-onclick on div - 无论我点击哪里都会震动

jquery怎么和纯js一样接收onclick带来的参数?