IE7+;中部分重新加载后未附加Javascript事件;

IE7+;中部分重新加载后未附加Javascript事件;,javascript,jquery,internet-explorer,onclick,Javascript,Jquery,Internet Explorer,Onclick,我有一个js文件,为所有页面加载,其中包含一个弹出对话框功能: $(document).ready(function() { $('a.popup').on('click', function(e) { alert('Show Dialog'); }); }); 这在首次加载页面时起作用。但是,当使用以下方法计算对象元素时: $(this).html(data); 似乎a.popup事件不再附加。此问题仅在IE7+中出现。它适用于chrome、firefox

我有一个js文件,为所有页面加载,其中包含一个弹出对话框功能:

$(document).ready(function() {

    $('a.popup').on('click', function(e) {
        alert('Show Dialog');
    });
});
这在首次加载页面时起作用。但是,当使用以下方法计算对象元素时:

$(this).html(data);

似乎a.popup事件不再附加。此问题仅在IE7+中出现。它适用于chrome、firefox和opera。有人知道问题的原因和解决方法吗?

尝试使用
live
函数进行事件绑定

请参见

,而不是:

$('a.popup').on('click', function(e) {
    alert('Show Dialog');
});
使用:

另请参见:

中的:

事件处理程序仅绑定到当前选定的元素;他们 在代码调用.on()时页上必须存在。 要确保元素存在并且可以选择,请执行事件 在文档就绪处理程序中为 页面上的HTML标记如果新的HTML被注入到 页面中,选择元素并在新HTML之后附加事件处理程序 被放置到页面中。或者,使用委派事件附加事件 处理器,如下所述。

委派事件的优点是,它们可以从中处理事件 以后添加到文档中的子元素。通过 选择一个元素,该元素保证在 已附加委派事件处理程序,您可以使用委派事件 避免频繁附加和删除事件处理程序。这 元素可以是视图中的容器元素 例如,模型视图控制器设计,或记录事件 处理程序希望监视文档中的所有冒泡事件。这个 文档元素在之前的文档头中可用 加载任何其他HTML,因此可以安全地在那里附加事件,而无需 正在等待文档准备就绪

除了处理后代元素上的事件的能力之外 尚未创建,委派事件的另一个优点是 当必须使用多个元素时,可能会产生更低的开销 监控。在tbody中包含1000行的数据表上,以下示例 将处理程序附加到1000个元素:

委派事件方法仅将事件处理程序附加到一个 元素、tbody和事件只需要向上冒泡一个级别 (从单击的tr到tbody):


您正在使用updatepanel吗?这是什么?不推荐使用
a.popup
?live,应改用.on()。
$('body').on('click', 'a.popup', function(e) {
    alert('Show Dialog');
});
$("#dataTable tbody tr").on("click", function(event){
    alert($(this).text());
});
$("#dataTable tbody").on("click", "tr", function(event){
    alert($(this).text());
});