Javascript 使用jQuery绑定到正文中的内容更改
我有一个来自icomoon的函数,它在窗口加载时运行(见下文) 我想更改它,以便在加载文档时调用一次函数,然后如果对主体进行了任何后续更改,例如:从js/ajax(最好只对dom的更改部分进行更改,以免一次又一次地遍历整个文档)。关于我应该使用什么jquery-on-events进行此操作,然后只在完成对整个文档的第一次执行后检查更改,有什么建议吗?也需要与Ie7+兼容 多谢Javascript 使用jQuery绑定到正文中的内容更改,javascript,jquery,Javascript,Jquery,我有一个来自icomoon的函数,它在窗口加载时运行(见下文) 我想更改它,以便在加载文档时调用一次函数,然后如果对主体进行了任何后续更改,例如:从js/ajax(最好只对dom的更改部分进行更改,以免一次又一次地遍历整个文档)。关于我应该使用什么jquery-on-events进行此操作,然后只在完成对整个文档的第一次执行后检查更改,有什么建议吗?也需要与Ie7+兼容 多谢 $( window ).load(function() { function addIcon(el, entity) {
$( window ).load(function() {
function addIcon(el, entity) {
$(el).addClass("iconed");
var html = el.innerHTML;
el.innerHTML = '<span style="font-family: \'icomoon\'">' + entity + '</span>' + html;
}
var icons = {
.....
};
function iconify() {
var els = document.getElementsByTagName('*'),
i, attr, c, el;
for (i = 0; ; i += 1) {
el = els[i];
if(!el) {
break;
}
attr = el.getAttribute('data-icon');
if (attr) {
if (!$(el).hasClass("iconed")) {
addIcon(el, attr);
}
}
c = el.className;
c = c.match(/icon-[^\s'"]+/);
if (c && icons[c[0]]) {
if (!$(el).hasClass("iconed")) {
addIcon(el, icons[c[0]]);
}
}
}
}
iconify();
$('body').on("contentchanged", function() { //some event that triggers ONCE the document has fully loaded, and is triggered when the DOM changes..
iconify(); //would prefer if this function only checked the modified part of the DOM - rather than the entire DOM each time (except on the 1st execution - when window loaded.
});
});
$(窗口).load(函数(){
附加功能(el,实体){
$(el.addClass(“iconed”);
var html=el.innerHTML;
el.innerHTML=''+实体+''+html;
}
变量图标={
.....
};
函数象似性(){
var els=document.getElementsByTagName('*'),
i、 attr,c,el;
对于(i=0;i+=1){
el=els[i];
如果(!el){
打破
}
attr=el.getAttribute('data-icon');
如果(属性){
如果(!$(el).hasClass(“iconed”)){
addIcon(el,attr);
}
}
c=el.className;
c=c.match(/icon-[^\s']+/);
如果(c&&图标[c[0]]){
如果(!$(el).hasClass(“iconed”)){
addIcon(el,图标[c[0]]);
}
}
}
}
象似性();
$('body')。在(“contentchanged”)上,function(){//是在文档完全加载后触发的事件,在DOM更改时触发。。
iconify();//如果此函数每次只检查DOM的修改部分,而不是整个DOM(第一次执行时除外,当加载窗口时)。
});
});
当主体内容被ajax或您知道的任何其他函数更改时,您可以触发自定义事件。然后将自定义函数绑定到该事件
比如说
函数附加项(el,实体){
$(el.addClass(“iconed”);
var html=el.innerHTML;
el.innerHTML=''+实体+''+html;
$(document.trigger('contentchanged');
}
然后您可以编写一个自定义函数来处理此事件,如下所示:
$(document).on('contentchange','selector',function(){
//Your code goes here.
});
您也可以参考DOM突变事件谢谢您的时间。我将用当前的代码更新问题。我希望(如果可能的话)有一个在DOM更改时触发的事件(例如[我知道不正确]:$('body')。on('change',function…)然后仅在DOM的更改部分上运行该函数。我想这会对您有所帮助:谢谢…比以前看到的,在IE7(DOMSubtreeModified)中似乎不起作用。好的,在这种情况下,您可能必须使用答案中提到的自定义事件,或者您可以尝试搜索更多。