Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery绑定到正文中的内容更改_Javascript_Jquery - Fatal编程技术网

Javascript 使用jQuery绑定到正文中的内容更改

Javascript 使用jQuery绑定到正文中的内容更改,javascript,jquery,Javascript,Jquery,我有一个来自icomoon的函数,它在窗口加载时运行(见下文) 我想更改它,以便在加载文档时调用一次函数,然后如果对主体进行了任何后续更改,例如:从js/ajax(最好只对dom的更改部分进行更改,以免一次又一次地遍历整个文档)。关于我应该使用什么jquery-on-events进行此操作,然后只在完成对整个文档的第一次执行后检查更改,有什么建议吗?也需要与Ie7+兼容 多谢 $( window ).load(function() { function addIcon(el, entity) {

我有一个来自icomoon的函数,它在窗口加载时运行(见下文)

我想更改它,以便在加载文档时调用一次函数,然后如果对主体进行了任何后续更改,例如:从js/ajax(最好只对dom的更改部分进行更改,以免一次又一次地遍历整个文档)。关于我应该使用什么jquery-on-events进行此操作,然后只在完成对整个文档的第一次执行后检查更改,有什么建议吗?也需要与Ie7+兼容

多谢

$( 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)中似乎不起作用。好的,在这种情况下,您可能必须使用答案中提到的自定义事件,或者您可以尝试搜索更多。