2013-01-11 24 views
0

我想在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 
    }; 
}); 
+0

我发现不完全是你想要的,但也许你可以在脚本源中找到一些有用的东西:http://www.arashkarimzadeh.com/component/content/article/17.html –

回答

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) { ... }); 

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

我希望这将有助于。

+0

非常感谢,但我的目的是替换或重新执行脚本..... – Till

+0

我的意思是:你可以将脚本封装到函数中并重新执行(即重新调用)函数吗? –

+0

由于我试图创建一个接口可以取代任何地方,没有办法你知道什么事件绑定在那个地方... – Till

相关问题