jQuery fn()正在加载/工作

jQuery fn() isn't loading / working?

本文关键字:加载 工作 fn jQuery      更新时间:2023-09-26

有一个div经常改变它的innerHTML通过ajax。一旦页面加载,jQuery函数()工作,但当innerHTML被ajax改变时,一些功能就不起作用了。我使用firebug检查了代码,并试图简单地解释它。* *

我认为DOM加载的js文件只有当页面加载第一次,如果ajax修改innerHTML然后函数不以某种方式调用。你说什么?你认为解决办法是什么?HTML页面

 <body>
     <div class="_div_change"> dynamically class add by jQuery function()
        here contenet is added by ajax functionality
     </div>
     <script type="text/javascript"> 
          $(function(){
            $('._div_change').addClass('.div_class');
                 });
     </script>
    </body> 
Loading first time & class is added by fn() |only div innerHTML modified by ajax *** 
                                            |  
    <div class="_div_change div_class">     | <div class="_div_change">
       innerHTML elements added successfully|   innerHTML elements altered successfully
    </div>                                  | </div>     

您的脚本是不完整的,但假设它看起来像这样:

$(function(){
        $('._div_change').addClass('.div_class');
});

…然后你所做的是告诉jQuery运行函数一次当DOM最初加载(调用$()与一个函数是jQuery.ready的快捷方式)。如果您想在通过ajax更新div的内容时重新运行该函数,则必须在ajax调用的success处理程序中这样做。

你可以给jQuery一个函数,它将调用任何ajax调用完成,通过jQuery.ajaxSuccess,这可能是有用的。

是的,该代码只在页面加载时运行一次。

$(function(){...});是为文档连接就绪事件的简短形式:$(document).ready(function(){...});

如果您更改了DOM并希望将jQuery代码应用于新元素,则应该以父元素为作用域重新运行代码。用下面的代码和作用域参数创建一个函数:

function updateElements(scope) {
  $('._div_change', scope).addClass('.div_class');
}

现在您可以从ready事件中运行函数,并将文档作为作用域:

$(function(){
  updateElements(document);
});

当您将新内容加载到元素中时,例如使用id="asdf"的元素,您可以将该元素作为作用域重新运行该函数,并且它将仅将更改应用于新添加的内容:

updateElements($('#asdf'));