post / get后jQuery双事件触发

时间:2010-07-14 15:33:39

标签: jquery ajax post get event-delegation

好吧,我已经破坏了我的大脑和其他人,弄清楚为什么在IE和最新版本的FF中发生这种情况。它适用于chrome。我只是一个新手开发人员,最近开始使用jquery。所以我甚至不知道我是否正确地这样做。

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

我已经设置了我在这里构建的应用程序的静态版本:

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

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

2 个答案:

答案 0 :(得分:1)

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

BAD:

$.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
});

答案 1 :(得分:0)

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

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

然后,您可以使用.load()和您正在寻找的元素来简化您的情况,例如:

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

就是这样,如果你将参数作为url selector传递,它只会从响应中获取 那个元素:)