询问关于javascript事件监听失效的问题

询问关于javascript事件监听失效的问题,第1张

innerHTML是ie独创的一个JavaScript方法,并不属于ecmascript也就是w3c对JavaScript设定的标准,w3c使用诸如createElement等方法创建修改元素,但是对大量元素进行修改的时候比较繁琐,没有innerHTML方便,这也是innerHTML非标准但是却如此流行的原因,但是既然innerHTML非标准他就会和其他非标准应用一样存在一些问题,你说的问题我也经常遇到,大概情况是:比如当使用innerHTML修改一长串图片列表时原使用for为上次装载的图片列表的监听完全失效,但是当使用innerHTML修改单张图片的时候则事件依然有效,可以尝试使用标准的setattribute等语句进行逐一修改但是工作量比较大,我一般使用innerHTML,然后在修改完成后再次为这些新添加的元素执行一次监听事件附加即可。

另外,如果你说的addEventListener 如果是JavaScript内置函数的话ie不支持需要使用attachevent,而使用匿名函数则可以解决一切兼容问题:

$(id).onclick=function(){};....虽然这个方法古老但是兼容性非常好

1.$("#msg").html($("#msg").html()+inner)

其实不是失效了,而是dom树改变了,#msg 里面的内容改变,就不是原来的 .list 了

2.$("#msg").append($(inner)

新加入的 $(inner) ,不在原本的 $('.list') 集合里,因此新加入的没有被绑定事件

我这给出两种做法:

① 在 #msg 内容改变后,给新加入 .list 绑定一次 hover;

② 将事件绑在 $(document) 上,例:

$(document).on('mouseover','.list',function(){

//...

})

不过方法②貌似没有hover写法。

仅供参考~

你把script代码放在input下面就好使了,已你现在的代码结构,事件绑定加载的比html早,也就是说jquery在绑定click事件的时候input还没有生成了,所以绑定失败。

jquery 方法一般都放在

$(function(){

//todo

})

里面,这样就会先加载html,可以找到html元素后再绑定里面的事件。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/8005282.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-12
下一篇2023-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存