我有一些 javascript 将更改应用到某些元素和加载更多此类元素的函数。像那样:
<ol id="test"><li>click</li></ol>
<script type="text/javascript">
$(function() {
$('OL').delegate("li","click",function(){
$('#test').append('<li>click</li>');
});
</script>
这是委托的基本功能,它可以工作。我可以点击多个<li>
元素。
问题是我想,additonaly做以下:
$(function() {
$('li').css('color','red');
//this is just an example, I don't need to paint the text red :)
});
对于所有li
不仅仅是在页面加载时加载的那些。
我无法将这些更改附加到任何内容(没有事件表明我已经加载了上面附加中的元素)。此外,我知道$('li').css('color','red');
每次调用 append 时我都能回忆起(或在 ajax 回调上,这是我真正正在工作的事情)。但是我有一个系统,其中包含许多返回不同 HTML 的 ajax 调用以及需要针对这些元素执行的大量插件和 jquery 人员。我不想在每次 ajax 成功时调用一个巨大的“刷新”函数。
现在我找到的唯一解决方案是将所有内容绑定到任意事件,并在每个 ajax 加载时对该事件进行触发调用,如下所示:
<ol id="test"><li>click</li></ol>
<script type="text/javascript">
$(function() {
$('OL').delegate("li","click",function(){
$('#test').append('<li>click</li>');
$('#test').children().trigger('load');
});
</script>
<script type="text/javascript">
$(function() {
$('OL').delegate("li","load",function(){
$(this).css('color','red');
});
});
</script>
这适用于第一个加载后的所有元素。所以我需要一些额外的代码,但它可以工作。
有人有更好的解决方案吗?有什么方法可以为非活动进行“现场直播”?
谢谢!
编辑 关于代码中的“红色”示例......我需要做的更改是许多其他更改:
('BODY').delegate(".mcs_container","load",function(){
$(this).mCustomScrollbar("vertical",400,"easeOutCirc",1.05,"auto","no","no",0);
}).trigger('load');
所以我认为只有触发一个功能才会起作用。
编辑 2
我在这里创建了一个工作示例:http:
//jsfiddle.net/THHNS/5/
我想要完成的是能够避免额外的触发器$('LI').trigger('focus');
编辑 3 我在 ON 应该足够和更好的时候使用委托。更新示例:http: //jsfiddle.net/THHNS/26/