Javascript 获取“的值”;onclick";用jQuery?

Javascript 获取“的值”;onclick";用jQuery?,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,是否可以通过jQuery获取标记的onClick属性的当前值 例如,我有: <a href="http://www.google.com" id="google" onclick="alert('hello')">Click</a> 或: 因此,在以后的代码中,我可以重新应用该代码,或者在必要时对其进行求值?我从来没有这样做过,但会这样做: var script = $('#google').attr("onclick") mkoryak是正确的 但是,如果使用更现代

是否可以通过jQuery获取标记的onClick属性的当前值

例如,我有:

<a href="http://www.google.com" id="google" onclick="alert('hello')">Click</a>
或:


因此,在以后的代码中,我可以重新应用该代码,或者在必要时对其进行求值?

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

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

mkoryak
是正确的

但是,如果使用更现代的方法(而不是使用
onclick
)将事件绑定到该DOM节点,则该方法将失败

如果这是你真正想要的,那就去看看,它的答案是可以接受的

干杯


我又读了一遍你的问题。
我想告诉您:不要使用
onclick
onkeypress
等绑定事件的方法

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

  • 向特定事件添加多个事件处理程序
  • 有选择地删除一些侦听器
  • 您可以使用像
    $('selector')这样的
    jQuery
    包装器,而不是实际使用
    addEventListener()
    。单击()

    再次干杯

    $('#google').attr('onclick') + ""
    
    然而,Firebug显示它返回一个函数“onclick”。稍后可以使用以下方法调用该函数:

    (new Function ($('#google').attr('onclick') + ';onclick();'))()
    

    。。。或者使用正则表达式剥离
    函数
    ,只获取其中的语句。

    你能解释一下你到底想实现什么吗?通常,您不必从HTML元素获取onclick属性。此外,不应在元素本身上指定onclick。而是使用JQuery动态设置onclick

    但据我所知,您尝试在两个不同的onclick函数之间切换。更好的方法是实现onclick函数,使其能够处理这两种情况

    $("#google").click(function() {
        if (situation) {
            // ...
        } else {
            // ...
        }
    });
    

    我不太确定如何在jQuery中做到这一点。。。但这是可行的:

    var x = document.getElementById('google').attributes;
    for (var i in x) {
     if (x[i].name == "onclick") alert(x[i].firstChild.data);
    }
    
    但正如Harshas所说,如果使用事件侦听器会更好,因为删除此函数并将其添加回onclick事件可能会很麻烦。

    这对我来说很有用

     var link_click = $('#google').get(0).attributes.onclick.nodeValue;
     console.log(link_click);
    

    $('#google').attr('onclick')保存
    onclick
    属性的值(这是一个字符串)。但是,由于浏览器以不同的方式处理事件属性,因此返回的是“function onclick(){alert('hello')}”。因此,如果您想直接调用函数,您必须剥离
    函数(){}
    ,或者立即调用它。如果您确实需要访问onclick属性的文本,而不是绑定的函数或事件本身,那么这就是答案。但是,您应该将.get(0).attributes.onclick.nodeValue替换为.get(0).attributes.onclick.value,因为nodeValue已被弃用。您可以获取onclick属性。但并不总是单击事件处理程序。
    var x = document.getElementById('google').attributes;
    for (var i in x) {
     if (x[i].name == "onclick") alert(x[i].firstChild.data);
    }
    
     var link_click = $('#google').get(0).attributes.onclick.nodeValue;
     console.log(link_click);