为什么JQ的each方法只对其中一个元素有效?

新手上路,请多包涵

我有两个id为1和2的div元素并设置了点击事件,点击时遍历里面的子元素用alert调试,但是我发现点击id=1的div能够正常触发each里面的alert但是点击id=2的div时就直接没反应了,我想知道这是什么原因?

image.png

    $('.container div').click(function(e){
        $('.members').empty();
        var room=document.getElementsByClassName("members")[0];
        var room_id=e.target.id;
        alert(room_id);
        $("#"+room_id+" div").each(function(){
            alert(this.className);
    })
阅读 1.5k
2 个回答

image
虽然不太明白你这个是想要干什么。但是看你代码应该是上面这样,试了一下,发现并没有像你说的each方法只对其中一个元素有效,分别点击id=1的divid=2的div,也没有发现点击id=1的div能够正常触发each里面的alert但是点击id=2的div时就直接没反应了这个现象出现。
image
倒是如果没有先点击 .container div的话,直接点击里面那个div,肯定会报错啊。
image

因为room_id在外面的点击事件获取的,逻辑哪里怪怪的,不太明白你这个是想要干什么。

还是建议你提供一下复现代码,最好是可以在线调试的。

看你这个选择器 $('.container div')$("#"+room_id+" div") 看上去是三层,那么也就有可能会出现id是undefined的情况

$('.container>div') 改成这样试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题