【问题标题】:jQuery double event fire after post/get发布/获取后jQuery双重事件触发
【发布时间】:2010-07-14 15:33:38
【问题描述】:

好吧,我已经绞尽脑汁想弄清楚为什么在 IE 和最新版本的 FF 中会发生这种情况。它适用于铬。我只是一个新手开发人员,最近开始使用 jquery。所以我什至不知道我是否正确地解决了这个问题。

它是大部分的基本形式。 jquery ajax post() 然后 get() 来更新页面。从 get 加载页面后,右侧导航/侧边栏可折叠标题会双重触发,操作窗格中的操作链接也是如此。我尝试使用 bind()、live() 和 delegate() 绑定 click 事件。它最初与 bind 一起工作,但我不得不在 ajax 调用之后重新绑定我的所有点击事件,我正试图找到一种解决方法。

我已经在此处设置了我正在构建的应用的静态版本:

http://ishiftdelete.com/pw_mkvi/ajax_wtf.htm

测试:单击右侧导航/侧边栏中操作页面内的编辑页面链接。这将打开一个带有表单和提交按钮的模型对话框。

【问题讨论】:

    标签: jquery ajax post get event-delegation


    【解决方案1】:

    好的,所以我的一个朋友想通了。显然脚本被加载了两次。

    不好:

    $.get(gurl, function (data) {
        var $response = $('<div />').html(data);
    $('#mydiv').html($response.find('#mydiv').html()); //form
    });
    

    好:

    $.get(gurl, function (data) {
        var $response = $(data);
    $('#mydiv').html($response.find('#mydiv').html()); //form
    });
    

    【讨论】:

      【解决方案2】:

      我知道你已经解决了这个问题,但是对于未来的发现者,你可以像这样在你的 &lt;div&gt; 周围添加一个包装器:

      <div id="myDivParent">
        <div id="myDiv"></div>
      </div>
      

      然后您可以使用.load() 和您要查找的元素来简化您的情况,如下所示:

      $("#myDivParent").load(gurl + " #myDiv");
      

      就是这样,如果您将参数传递为url selector,它将从响应中获取该元素:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-09
        • 1970-01-01
        • 2014-09-18
        • 1970-01-01
        • 2011-04-02
        • 2012-11-11
        相关资源
        最近更新 更多