在页面完全加载并且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

09-11 18:30