0

我似乎在查询和绑定方面遇到了一些问题。

在我的 _Layout 中,我在页面底部找到了 jquery,它有一个.on('click')

在得到一个具有“添加项目”链接的 partialView 中,当我单击它时,它会$.post()返回一个 parialview 并将其填充到 div 容器中。

下次当我尝试通过单击同一链接添加另一个项目时,它就像一个链接并刷新了站点,就像它失去了与 jquery 的绑定一样。如果我选择让 jquery 每次都在它上面渲染的部分工作,但是为了结构我不想在页面中间有 jquery 脚本。

为什么会这样,我该怎么办?

编辑:
这是我得到的绑定。它像以前一样工作一次。

$('.menu-day').on('click', 'a.addItem', function (e) {
          e.preventDefault();
          console.log('ok');
          addRow($(this).attr('id'));
});
4

2 回答 2

2

使用 $().on('click', function() { ... }) 的工作方式很像传统的 .click() 绑定,因为在绑定之前元素必须存在于页面上。例如:

$("ul li").on('click', function() { ... })

所以这不适用于动态添加的列表元素。您可以做的是在单击中指定一个选择器,该选择器将侦听冒泡到上下文的事件。例如:

$("ul").on('click', 'li', function() { ... });

现在,无论何时添加,单击列表项都会触发,因为它是绑定的容器列表,并且只是在侦听特定的 eventTarget。

于 2012-10-02T19:38:46.887 回答
0

您可以使用 delegate() 方法来绑定 Dom 中存在的事件和将来添加的元素。通过这个链接

于 2012-10-02T19:42:59.403 回答