我想在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 :(得分: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) { ... });
...................
}
我希望它会有所帮助。