我有一个页面加载,然后使用Jquery POST请求到我的.NET MVC项目,以获取一些HTML放在页面上的容器中。我的问题是我似乎无法访问该数据的html属性。例如,我发布POST只是为了获得一个带有链接的div。该链接的ID为' LinkClick'。当我点击链接时,我想要一个弹出窗口:
$("#LinkClick").click(function (e) {
e.preventDefault();
alert("hi");
});
如果我把它放在我的.cshtml文件中,它可以工作,但我宁愿将Javascript保留在我的MVC项目之外。我怎样才能访问这个' LinkClick'它实际上并不存在于我的页面中,但很快就会通过帖子请求存在。
答案 0 :(得分:1)
您正在通过.on()
方法寻找事件委派。
$(document).on('click', '#LinkClick', function (e) {
e.preventDefault();
alert("hi");
});
注意:强>
请注意,您不应该使用document
作为绑定选择器。我在这种情况下做了,因为我不知道加载时页面上最接近的父级。为了提高效率,您应该使用加载期间页面上存在的新ajax创建元素的最接近的parent
作为绑定元素。这样,您就不会在DOM树中一直冒泡一个事件。
此外,对于jQuery 1.7+版本,您可以使用.on()
方法。
对于jQuery 1.4.2 - 1.7的版本,您应该使用.delegate()
方法。
对于早于jQuery 1.4.2的版本,您可以使用.live()
方法。但是,此方法 强烈 不鼓励。建议您升级jQuery版本而不是使用此方法。