Mik*_*rds 39 javascript jquery onload
有没有人碰巧知道IF以及我如何重新调用所有的on-load事件处理程序?我正在引用一些我无法控制的.js文件,这些.js库在$(document).ready()中进行初始化,遗憾的是,它们没有提供任何简单的函数来重新初始化.
我目前正在尝试用ajax调用中的内容替换大的div块,因此我必须重新初始化外部库.因此,只需调用$(document).ready()以重新初始化一切就好了.
到目前为止,我已经在ajax调用上尝试了这个:
success: function(data) {
alert('1'); // Displays '1'
$('#content').html(data);
alert('2'); // Displays '2'
$(document).ready();
alert('3'); // Does not display
}
Run Code Online (Sandbox Code Playgroud)
呼叫$(document).ready();也很安静.JavaScript控制台显示没有错误.有谁知道这是否可能(没有修改javascript库文件)?
jfr*_*d00 39
既然你在没有修改外部JS文件的情况下询问了如何做到这一点,我会回答这个问题.我.ready()在调试器中跟踪了jQuery中的函数,看起来在页面准备就绪时调用的根函数是:
jQuery.ready();
Run Code Online (Sandbox Code Playgroud)
但是,看起来你不能再调用它来完成你想要的东西,因为它似乎在它第一次触发时,它与先前注册的函数解除绑定(例如忘记它们).因此,jQuery.ready()第二次手动调用不会再次重新触发相同的函数调用,我在调试器中验证了(断点只被击中一次,而不是第二次).
所以,似乎你无法在不更改jQuery实现的情况下解决这个问题,因此它不会解除绑定(允许多次触发)或更改每个就绪处理程序代码以使用您自己的事件,您可以像您一样多次触发想.
Fab*_*sco 29
我做了类似的事情:
// When document is ready...
$(function(){
onPageLoad();
});
function onPageLoad(){
// All commands here
}
Run Code Online (Sandbox Code Playgroud)
现在我可以随时调用此功能.
Alx*_*ndr 12
实现这一目标的一个简单方法就是创建自己的事件,如下所示:
$(document).bind('_page_ready', function() { /* do your stuff here */});
Run Code Online (Sandbox Code Playgroud)
然后添加:
$(function() { $(document).fire('_page_ready'); }); // shorthand for document.ready
Run Code Online (Sandbox Code Playgroud)
最后,每当你需要再次运行它时,你只需调用它:
$(document).fire('_page_ready');
Run Code Online (Sandbox Code Playgroud)
如果你真的无法编辑外部脚本文件我已经制作了一个jsFiddle,可以让你想做的事情,你可以看看这里的代码:http://jsfiddle.net/5dRxh/
但是,如果您不想使用它,那么在包含jQuery之后添加此脚本非常重要,如下所示:
<script src="jquery.js" type="text/javascript"></script>
<script>
//script from jsFiddle (only the plugin part at the top).
</script>
<!-- All the other script-files you want to include. -->
Run Code Online (Sandbox Code Playgroud)
如果您更改整个正文内容,您可以第二次触发 document.ready:
$('body').html($('body').html())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74415 次 |
| 最近记录: |