所以,我有一个ajax调用,异步设置为false,将内容加载到特定的div中。在这个内容中有一个id =' cancelbtn的按钮。问题是,如果我调用remove,它就不会被删除,即使控制台之前正确打印了一行元素。奇怪的是,如果我多次重复删除行,那么它就可以正常工作'。有任何想法吗?来自ajax调用的代码是:
$.ajax ({
url: 'contentincludingthecancelbtn.html',
async: false,
success: function(data){
$('#divCont').html(data);
console.log($('#cancelbtn'));
$('#cancelbtn').remove();
});
});
按钮显示在最后。这曾经是一个直接加载调用(不工作)为了尝试async而改变:false但没有运气。
答案 0 :(得分:1)
也许你有两个具有相同ID的元素,所以jQuery删除了第一个,然后是第二个(你要删除的那个)。
要解决此问题,您可以更改元素的ID或尝试以下代码:
$('#divCont').find('#cancelbtn').remove();
答案 1 :(得分:0)
尝试删除完成事件上的按钮 像这样:
$.ajax ({
url: 'contentincludingthecancelbtn.html',
async: false,
success: function(data){
$('#divCont').html(data);
console.log($('#cancelbtn'));
},
complete: function(){
$('#cancelbtn').remove();
});
});
答案 2 :(得分:0)
使用ID时,您应该小心,因为它们应该唯一 所以我们没有两个元素与相同的ID 即使我们有两个具有相同id的元素,例如
$('body').append('<p id="para">text</p><p id="para">text</p>');
现在出现以下代码:
$('#para').click(function(){console.log('just clicked ');});
只适用于作为第一段的第一个元素
注意:
$('#divCont').find('#cancelbtn').remove()
:确保我们删除了id为divCont的所有元素
的但强>
另一方面它没有意义,因为当我们期望匹配的元素大于1 时使用 .find jquery方法,而我们知道id应该是唯一的所以 $('#divCont')。remove(); 就够了