下面的代码在FF中工作正常,但IE抛出错误,因为onclick函数包含引号。如何在IE中完成这项工作?
我正在做这样的事情
<a href="#" onclick="add('1','val1')" id="link1">Link1</a>
<a href="#" onclick="add('2','val2')" id="link2">Link2</a>
<script>
function add(id,val) {
//do something
$('#link'+id).attr('onClick',$('#link'+id).attr('onClick').replace("add","remove"));
}
function remove(id,val) {
//do something
$('#link'+id).attr('onClick',$('#link'+id).attr('onClick').replace("remove","add"));
}
</script>
示例:单击link1后,链接应更新为
<a href="#" onclick="remove('1','val1')" id="link1">Link1</a>
答案 0 :(得分:0)
IE有问题,您可以尝试使用在IE中效果更好的.prop方法。但是,您总是会导致IE问题与更改事件处理程序混乱。
最好每次都调用相同的函数,只需在页面的某个地方保存一个状态,即使在诸如在“add”和remove之间切换类的属性中也是如此。
答案 1 :(得分:0)
这可能有效:
var $link = $('#link');
var click = $link.attr('onClick');
$link.removeAttr('onClick');
$link.click(function() {
eval(click.replace("XYZ","abc"));
});
但我强烈建议您停止使用onClick
并使用jQuery开始绑定事件。如果您可以在onClick
中发布代码,我可以将其转换为标准的jQuery对象和函数。
答案 2 :(得分:0)
更改了onclick to href,并且它也可以在IE中使用。
答案 3 :(得分:0)
可能有帮助:
function add(id,val) {
$('#link'+id).attr('onClick',function (i, click) {
var str = new String(click);
return str.replace("add","remove");
});
}