【问题标题】:AJAX binds jquery events multiple timesAJAX多次绑定jquery事件
【发布时间】:2012-08-09 05:58:10
【问题描述】:

我有一个母版页设置,在最顶部的母版页中有一个 pageLoad,它为嵌套母版页调用 pageLoad2,为内容页调用 pageLoad3。

在我的内容页面中,我有一个 jquery 点击事件,在我的嵌套母版页中,我有一个 Web 用户控件。

每当我在嵌套母版页中使用用户控件时,它都会重新绑定内容页面中的单击事件(无疑是因为再次调用了 pageLoad3),但这会使单击事件在单击时触发两次。当您访问更高的母版页时,问题会变得更糟(例如,如果调用来自最顶层母版页的用户控件,则会触发 3 次)。

谁能告诉我如何确保它只绑定 jquery 事件一次?

【问题讨论】:

    标签: asp.net jquery ajax master-pages


    【解决方案1】:

    您可以使用 .one() 函数,它首先取消绑定事件。

    $("#name").one("click", function(){
      // insert code here
    });
    

    【讨论】:

    • 这不起作用 - 因为这使得事件只触发一次,然后再也不会触发。我仍然需要能够按我想触发事件的次数点击,而不是在同一次点击中两次或更多次。
    • 顺便说一句 - 我喜欢“你可以使用 .One() 函数”的 LOTR 内涵哈哈 ;)
    • $("#name").One("click", function(){ "One" 应该是 "one" -> 小写
    【解决方案2】:

    您可以使用.live()-handler,这样您就不必一次又一次地绑定控件。

    【讨论】:

    • 有趣的是,这实际上似乎加剧了问题。当直接将实时处理程序交换为常规单击处理程序时 - 即使没有使用用户控件,它也会触发两次。而且将其放在顶部母版页中也无济于事
    • Doh - 星期一早上我猜,这是我的尴尬搞砸了 - 现场处理程序当然工作得很好 - 非常感谢蒂姆!
    猜你喜欢
    • 1970-01-01
    • 2014-07-28
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    相关资源
    最近更新 更多