如何替换(重新执行)当前脚本函数?

时间:2013-01-11 07:44:28

标签: javascript jquery replace eval execute

我想在ajax响应之后将加载脚本替换为现有脚本。

由于我只会更新一些元素,因此整个页面不会被重新加载,并且替换元素上的某些事件将会丢失。

Re-Run application Javascript on ajax loaded content< ---这不是我的解决方案......

我尝试从加载的html和eval()中获取脚本标记。但是,这不会取代现有的功能,而是加倍。

我想通过不使用$(document).html(data);

来替换或重新执行脚本功能

我读了许多像这样的参考文献, http://www.javascriptkit.com/javatutors/loadjavascriptcss2.shtml

但我不太明白.....

请帮助并建议一个更容易理解的例子。非常感谢你!

我的脚本现在是

  $script.each(function(index){ //data from loaded page, same page
    if(!$(this).attr('src')){    //replace where is not from external only

          $(document.getElementsByTagName( 'script' )).slice(index).remove(); 
          //remove existing script, no working

         eval($(this).text()); 
         // re-execute, wokring
     }; 
 }); 

1 个答案:

答案 0 :(得分:1)

您可以尝试将逻辑与功能结合起来,并在需要时调用它。此外,如果你加载ajax的内容将包含JS函数,你可以在将检索到的html放到页面后调用它。

当我需要将事件绑定到一些动态加载的组件时,我实现如下函数:

function rebindDynamic() {
  $('#elem1')
    .unbind()  //Or unbind('click') if you want to unbind specific handlers
    .click(function (e) { ... });

  $('#elem2')
    .unbind()  //Or unbind('keyup') if you want to unbind specific handlers
    .keyup(function (e) { ... });

  ...................
}

我希望它会有所帮助。