开发者社区> 问答> 正文

jquery动态each

比如DOM结构是ul>li*n
而li是后来ajax动态加载来的
比如我需求是根据li是否被赞过,如果赞过把当前li的背景变为红色
现在如果直接$('ul>li').each(function(){})肯定是不行的
必须事件委托但是事件委托的event只有click这些啊,没有each。。该怎么写?
理想情况是$('ul').on('each','li',function(){})
现在有种方案是在ajax success回调中写each,但是只有这种吗?想用第一种或其他

展开
收起
小旋风柴进 2016-03-26 10:38:50 1898 0
1 条回答
写回答
取消 提交回答
  • 代码如下:

    <!doctype html>
    <html lang="en">
    <head>
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
        <meta charset="UTF-8">
        <style>
            .z{color: #f00;}
        </style>
    </head>
    <body>
            <ul id="test">
                <li>1</li><li>2</li><li>3</li><li>4</li>
            </ul>
    
            <script type="text/javascript">
                //绑定自定义事件, 名字为 update (此处只为演示, 名字可以按自己的喜好起...)
                $('#test').on('update', function(){
                    $('li', this).each(function(li){
                        li = $(this);
    
                        if(li.hasClass('z')){//已经被赞过的
                            return;
                        }
    
                        if((li.text()*1) % 2 === 1){//此处只是例子,用于如果该li里面的是奇数,则认为是赞过的, 加样式
                            li.addClass('z');
                        }
                    });
                }).trigger('update');//顺便触发一下更新目前li的状态
    
    
                //模拟ajax请求
                setTimeout(function(){
                    $('#test').append('<li>5</li><li>6</li><li>7</li><li>8</li>').trigger('update');//数据追加上之后,触发自定义事件,更新目前所拥有的li的状态
                }, 2000);
            </script>
    </body>
    </html>
    2019-07-17 19:15:39
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
23-Vue.js在前端...1506518547.pdf 立即下载
Javascript中的对象 立即下载
JavaScript函数 立即下载