首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用jQuery调用动态创建的元素上的自定义函数

问用jQuery调用动态创建的元素上的自定义函数
EN

Stack Overflow用户
提问于 2015-03-06 15:49:14
回答 1查看 4.7K关注 0票数 1

对于具有特定类的所有元素,我都有一个外部函数,如下所示:

代码语言:javascript
复制
jQuery('.myClass').myFunction();

这是可行的,但我如何使这种情况发生在动态创建的元素。我有多个函数可以创建元素,我不想在创建新元素的每一段代码中添加这一行。

这样做的原因是,我根据与php一起使用的元素加载javascript。因此,我不能将myFunction()添加到元素create函数中,因为这两个函数都位于不同的文件中,这些文件可能加载在同一个页面上,也可能不会一起加载。

因此,在创建对象时,如何使用“..myClass”调用对象上的.myFunction()函数。

所以在创建元素的函数中,我不知道需要对元素调用哪些函数,而在对元素执行函数的文件中,我不知道哪些函数创建了元素。

解决方案:,因为这是一个重复的问题,我不能添加一个答案。然而,我确实采取了一种不同于在这个问题上解决这个问题的方法。我的方法是创建一个新类,其中每个脚本都可以添加在创建元素时应该调用的函数,并在创建新元素时调用这些函数。

联署材料:

代码语言:javascript
复制
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

然后,在每个必须对对象调用函数的文件中,我将如下所示:

代码语言:javascript
复制
myJsHandler.addAction(function(){
    jQuery('.myClass').myFuncion();
});

在创建元素的每个文件中,我将其放在创建元素之后:

代码语言:javascript
复制
myJsHandler.callActions();

对我来说这很管用。不过,也有一些说明:

  • 我可能需要添加一些代码,以便始终在加载其他脚本之前创建jsHandler。
  • 注意,这个函数每次创建元素时都调用所有函数。对于我的工作来说,这不重要。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-06 16:26:27

代码语言:javascript
复制
<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"))

有关详细信息和突变事件列表,这链接

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28902413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档