如何将已经运行的jQuery脚本应用于Ajax调用的内容?

如何将已经运行的jQuery脚本应用于Ajax调用的内容?,jquery,ajax,refresh,Jquery,Ajax,Refresh,我正在处理这个问题。我在我的页面上运行了一些jQuery脚本,效果很好。当我想将这些脚本应用到由AJAX调用的内容时,问题就来了 我创建了一个代码示例,演示了这个问题。 它由3个文件组成-index.html、target.html和main.js $(document).ready(function() { $('a').live("click", function() { if(!confirm('Are you sure?')) retur

我正在处理这个问题。我在我的页面上运行了一些jQuery脚本,效果很好。当我想将这些脚本应用到由AJAX调用的内容时,问题就来了

我创建了一个代码示例,演示了这个问题。 它由3个文件组成-index.html、target.html和main.js

$(document).ready(function() {

    $('a').live("click", function() {
        if(!confirm('Are you sure?'))
            return false
    });

    $('button').click(function() {
        $.post('target.html', function(data) {
            $('#target').html(data);
        });
    }); 

});
Index.html(仅限于

比方说,我希望用户每次单击
标记时都进行确认。我点击#main
内部的标签,它工作正常。我点击“调用ajax”按钮,出现一个链接,我点击它,没有显示确认

所以,我想我应该把
放在target.html文件中

这很好,当我再次单击第一个链接(在#main div内)时。“确认”显示2次,而不是仅显示一次

我在网上发现,有些人使用
.live()
方法或
$(document).ajaxComplete(function(){
)来处理这个问题,但我无法让它运行


有人能提供一个有效的解决方案吗?谢谢,迈克。

加载额外文件时,您是否尝试过重新绑定您的单击处理程序

var f;

$(document).ready(function() {
    $('a').live("click", f=function() {
        if(!confirm("Are you sure?")) return false;
    });

    $('button').click(function() {
        $.post('target.html', function(data) {
            $('#target').html(data);
            $('a').unbind("click").live("click", f);
        });
    });
});

另外,我会检查控制台是否有错误。

无法运行它是一个不好的借口。您当然可以运行它,而且应该这样做,因为这是正确的方法

试试这个:

var confirmFn = function() {
        if(!confirm('Are you sure?'))
            return false
}

$('a').click(confirmFn);
$('#target').delegate("a", "click", confirmFn);
$('button').click(function() {
    $.post('target.html', function(data) {
        $('#target').html(data);
    });
}); 
var f;

$(document).ready(function() {
    $('a').live("click", f=function() {
        if(!confirm("Are you sure?")) return false;
    });

    $('button').click(function() {
        $.post('target.html', function(data) {
            $('#target').html(data);
            $('a').unbind("click").live("click", f);
        });
    });
});
var confirmFn = function() {
        if(!confirm('Are you sure?'))
            return false
}

$('a').click(confirmFn);
$('#target').delegate("a", "click", confirmFn);
$('button').click(function() {
    $.post('target.html', function(data) {
        $('#target').html(data);
    });
});