为什么我必须使用视图呈现jquery

时间:2012-10-02 19:32:53

标签: jquery asp.net-mvc-3 razor asp.net-mvc-4

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

在我的_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'));
});

2 个答案:

答案 0 :(得分:2)

使用$()。on('click',function(){...})与传统的.click()绑定非常相似,因为元素必须存在于之前你绑定它。例如:

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

因此,这不适用于动态添加的列表元素。你可以做的是在点击内部指定一个选择器,它将监听冒泡到上下文的事件。例如:

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

现在点击列表项将会触发,无论它们何时被添加,因为它是绑定的容器列表,只是在侦听特定的eventTarget。

答案 1 :(得分:0)

您可以使用delegate()方法绑定Dom中存在的事件以及将来添加的元素。完成此link