jquery / jquery-mobile - 如何为每个元素触发一次函数,并将元素添加到DOM中

时间:2011-11-24 08:12:03

标签: javascript events jquery-mobile jquery

我需要在某些触发元素上启动插件。

我正在使用它:

$( ':jqmData(role="page"):jqmData(trig="true")' ).live( 'pagebeforeshow',function(e){
   console.log("detected");
   // stuff to do...
   });

由于这是我的背景页面(DOM中的第一个),使用 live 会在每次转换时触发它,并使用一个替换实时仅在初始触发器上触发它元素,而不是第二个元素被拉入。

问题: 如何设置一个“实时触发元素,但每个触发元素只运行一次”的功能?设置带数据的标志会有帮助吗?

感谢您的信息!

2 个答案:

答案 0 :(得分:0)

设置一个变量,用于存储触发器是否已被占用。使用此变量作为条件是触发器以确保它只运行一次。然后在知道触发器可以再次运行时重置它。

答案 1 :(得分:0)

我想你的困境是你必须使用.live(),因为最初在DOM中只有一个匹配的元素,而不是它们的排序方式?否则,.one()应该可以正常工作。 manual有一个很好的示例,说明如何使用.one()实现.bind(),这是您使用.live()执行此操作的方法,它应该可以解决问题:

function preparePage(e) {
    $(this).die('pagebeforeshow', preparePage);
    console.log("detected");
    // stuff to do...
}

$(':jqmData(role="page"):jqmData(trig="true")').live('pagebeforeshow', preparePage);