即使要删除的元素在当时可见,jQuery remove()也不会在第一次尝试时删除

时间:2014-09-12 00:30:32

标签: javascript jquery ajax

所以,我有一个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但没有运气。

3 个答案:

答案 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(); 就够了