比如DOM结构是ul>li*n
而li是后来ajax动态加载来的
比如我需求是根据li是否被赞过,如果赞过把当前li的背景变为红色
现在如果直接$('ul>li').each(function(){})
肯定是不行的
必须事件委托但是事件委托的event只有click这些啊,没有each。。该怎么写?
理想情况是$('ul').on('each','li',function(){})
现在有种方案是在ajax success回调中写each,但是只有这种吗?想用第一种或其他
代码如下:
<!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>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。