如何将已经运行的jQuery脚本应用于Ajax调用的内容?
我正在处理这个问题。我在我的页面上运行了一些jQuery脚本,效果很好。当我想将这些脚本应用到由AJAX调用的内容时,问题就来了 我创建了一个代码示例,演示了这个问题。 它由3个文件组成-index.html、target.html和main.js如何将已经运行的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
$(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);
});
});