ie7下 jquery attr(‘onclick’)无反应问题

javascript cooljun 2170℃ 0评论

一个DOM对象可通过.obj.onclick = function(){}这种形式绑定一个事件,同样jquery里面可以通过bind方法绑定事件,实例代码如下:

$(this).find(“IMG[alt=’向上’]“).bind(“click”, function(){

listItemUp(i, o);

});

$(this).find(“IMG[alt=’向下’]“).bind(“click”, function(){

listItemDown(i, o);

});

$(this).find(“IMG[alt=’ 编辑’]“).bind(“click”, function(){

editBigNewsListItem(i, o);

});

$(this).find(“IMG[alt=’删除’]“).bind(“click”, function(){

delBigNewsListItem(i, o);

});

但 是有一种情况是一个DOM对象在之前已经用onclick 绑定了一个事件,但是参数发生改变,这个时候需要再次用jquery绑定一个不同的事件.这个时候如果不销毁onclick 绑定的事件,则点击的时候会触发两个事件.这种不希望看到的情况在IE以及Firefox下表现并不相同.所以应该销毁之前的onclick 事件.销毁的方法如下:

$(this).find(“IMG”).attr(“onclick”, “”);

这种方法实际上 是在DOM对象上加上一个onclick属性,源代码里面可以看到.这种办法在FIREFOX下面很好用,在IE下会导致 jquery绑定的click事件无效,因为这个attr(“onclick”, “”)造成点击没有任何反应.注意以上是目前知道的最好的办法,不要企图用removeAttr(“onclick”); 方法取销毁,这是没有用的.当然jQuery的unbind也是不好使的.

最后的解决办法通过JavaScript是让DOM节点的代码重新生成,这样空值的onclick属性将会被去掉,接着jQuery的click事 件开始起作用了.

转载请注明:cooljun小窝 » ie7下 jquery attr(‘onclick’)无反应问题

如果你觉得这篇文章对你有帮助,请支持我继续更新网站 !捐赠本站
喜欢 (0)or分享 (0)

您必须 登录 才能发表评论!