我有一个外部函数,必须为具有特定类的所有元素调用,如下所示:
jQuery('.myClass').myFunction();
这行得通,但是对于动态创建的元素,我该如何做到这一点。我有多个可以创建元素的函数,并且我不想在每一个创建新元素的代码中都添加此行。
这样做的原因是,我根据与php一起使用的元素来加载javascript。因此,我无法将myFunction()添加到元素创建函数中,因为这两个函数位于不同的文件中,这些文件可能会或可能不会一起加载到同一页面上。
因此.myFunction()
,一旦创建后,如何在具有“ .myClass”的对象上调用该函数。
因此,在创建元素的函数中,我不知道需要在元素上调用哪些函数,在执行元素上的函数的文件中,我也不知道哪些函数可以创建元素。
解决方案:由于这被标记为重复问题,因此我无法添加答案。但是,与该问题相比,我确实采用了不同的方法来解决此问题。我的方法是创建一个新类,每个脚本都可以添加在创建元素时应调用的函数,并在创建新元素时调用这些函数。
Js:
function jsHandler(){
this.actions = [];
this.addAction = function(action){
this.actions.push(action);
action();
};
this.callActions = function(){
jQuery.each(this.actions,function(key,action){
action();
});
};
}
var myJsHandler = new jsHandler;//global variable
然后在每个必须通过对象调用函数的文件中,我将其放置:
myJsHandler.addAction(function(){
jQuery('.myClass').myFuncion();
});
在每个创建元素的文件中,我在创建元素之后将其放入:
myJsHandler.callActions();
对我来说,这有效。一些注意事项:
<div class="root">
<span class="line"></span>
</div>
jQuery(document).on('DOMNodeInserted','.line',function(){
jQuery(this).myFunction();
console.log("object added");})
jQuery(".root").append(jQuery("<span/>").addClass("line"))
有关详细信息和突变事件,请列出此链接
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句