使用jQuery在我的html中的`onclick`属性中获取函数的内容

时间:2009-11-05 19:22:19

标签: javascript jquery

什么?我知道,这是个坏主意。

首先,我无法控制输出的html,它来自供应商,它是通过我们公司与之达成协议的疯狂系统生成的。 (我们不要谈论这种情况,我知道这不是最佳的)

在html中我有:

<a id="notify" onclick="location.href='index.php?foo=bar';return false;" href="javascript:;">Notify!</a>

在我的JS中如果我这样做:

console.log($("#notify").attr("onclick"))

我想:

onclick(event)

哪个有意义,但我需要更改onclick的属性,所以它读取的内容如下:

onclick="location.href='index.php?foo=bar&zoobazz=moo';return false;"

更好的是,如果我可以删除onclick并用location.href替换href属性值。

7 个答案:

答案 0 :(得分:5)

这将为您提供字符串

中的功能
$("#notify").attr("onclick").toString()

在此之后grep URL

答案 1 :(得分:3)

如果我理解你的问题,你想要真正看到onclick事件正在做什么并附加到它,而不仅仅是替换它。我在chrome中尝试了这个并且它可以工作,但它几乎是一个黑客。基本上,当你获得对“click”或“onclick”事件函数的引用(使用jQuery或纯JS)时,你可以使用“.toString()”将函数转换为字符串。然后你只需使用一些技巧去除“功能”定义,然后你就会得到你需要的东西 - “location.href ='.......”。

然后只需追加您的附加参数。希望这会引导您朝着正确的方向前进。

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
    var $target = $("#notify");
    var funcBody = $target.attr("onclick").toString().split("\n")[1].split(";")[0];
    $target.attr("onclick","").attr("href", funcBody);
});
</script>
</head>
<body>
<a id="notify" onclick="location.href='index.php?foo=bar';return false;" href="javascript:;">Notify!</a>
</body>
</html>

答案 2 :(得分:2)

您可以使用$(“#foo”)设置onclick。click =''; 您可以使用.attr(key,value)更改属性来更改href; http://docs.jquery.com/Attributeshttp://docs.jquery.com/Tutorials:Edit_in_Place_with_Ajax

所以

$('#foo').click = '';
$('#foo').attr('href', 'whateveryousetitto');

答案 3 :(得分:2)

document.getElementById('notify').onclick = function() {location.href='index.php?foo=bar&zoobazz=moo';return false;};

答案 4 :(得分:2)

$("#notify").click(function() { $("#notify").attr("onclick", "location.href='index.php?foo=bar&zoobazz=moo';"); return false;}) 

不能做你需要做的事情吗?

答案 5 :(得分:1)

我可能正在阅读太多问题,但我认为OP正在询问如何获取事件代码以便可以对其进行操作,而不仅仅是替换。当指定“index.php?foo = bar”时,我不认为bar的值是已知的。如果这是一个已知值,那么为什么要读取onclick值呢?

答案 6 :(得分:1)

alert($('#notify').click);