我有一个局部视图,通过dataType为html的Ajax调用返回 - 在这个html中有一个带有id的锚点标签,我正在使用jQuery的.on() API和1.7.1版本的框架来连接点击事件。
为了简洁起见,假设局部视图如下:
<div id="container" class="modal-dialog">
<h1>Heading</h1>
<a id="thelink" href="#">
<img src="<%:Url.Content("~/Path/To/Image.jpg")%>" /></a>
</div>
通过标准的$.ajax
POST请求到MVC控制器操作,该操作返回上述内容作为部分视图结果,我截取并放置在模态对话框中。
我尝试连接的事件代码如下:
$(function () {
$("#thelink").on("click", function (e) {
e.preventDefault();
$("#jquery-ui-dialog-box").dialog("close");
});
});
现在,如果我将
on()
切换为live()
- 一切都按预期工作。但是使用上面的代码在IE8(IE8标准模式)中,事件不会触发-断点没有命中,jQuery UI模态框不会像上面的示例那样关闭。然而,通过live()
调用,所有内容都按预期工作。这是我第一次也是唯一一次看到
on()
和已弃用或“卷起来”的事件绑定API(delegate、live、bind)之间行为差异的情况。我没有使用
live()
或delegate()
出现问题,但希望了解为什么会发生这种情况,如果可能的话!问候 SB
delegate()
或on()
来附加到更接近目标元素的元素,而不是附加到document
。 - Matt