【问题标题】:jquery/jquery-mobile - how to fire a function once per element, with elements being added to DOMjquery/jquery-mobile - 如何为每个元素触发一次函数,并将元素添加到 DOM
【发布时间】:2011-11-24 08:12:02
【问题描述】:

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

我正在使用这个:

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

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

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

感谢您的信息!

【问题讨论】:

    标签: javascript events jquery-mobile jquery


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      设置一个变量来存储触发器是否已被处理。将此变量用作触发器旁边的条件,以确保它只运行一次。然后在您知道触发器可以再次运行时重置它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-11
        • 2010-10-12
        • 1970-01-01
        • 2011-11-01
        • 1970-01-01
        • 2010-09-28
        相关资源
        最近更新 更多