什么?我知道,这是个坏主意。
首先,我无法控制输出的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属性值。
答案 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/Attributes和http://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);