在页面完全加载并且JQM处理完所有ui修改(即列表视图,按钮等)之后,我仅尝试执行JS代码段一次。我确实希望它仅在该页面上执行,而不在随后的页面上执行。
我首先尝试的是pageshow
<script>
$('[data-role=page]').live("pageshow", function() {
alert("Ready!");
});
</script>
这具有以下问题:该函数现在已附加到页面div,并且每次显示任何后续页面时都会执行该函数。但是,我只希望对此执行一次,并且只对包含该JS代码段的页面执行一次。
有没有一种方法可以侦听pageshow事件,而无需实际将功能附加到该事件。
我能够做到的唯一方法是通过这样的绑定和解除绑定:
<script>
$('[data-role=page]').bind("pageshow.test", testfun);
function testfun() {
alert("Ready!");
$('[data-role=page]').unbind("pageshow.test", testfun);
}
</script>
但是,有没有更优雅的方法呢?
最佳答案
jQuery具有one
函数来绑定事件处理程序,该事件处理程序只能执行一次。检查reference。