无法使用jquery的remove()删除元素

时间:2013-09-18 10:48:28

标签: javascript jquery greasemonkey

我正在为这个网站制作一个关于这个问题的例子:http://tinyurl.com/websiteasdasd我要删除元素rodape-ao-vivo,问题是做$("#rodape-ao-vivo").remove();不起作用,但是,如果我这样做的话

之类的东西
setInterval(function() {
        $("#rodape-ao-vivo").remove();
    }, 1000);

它运作得很好,所以我基本上要求你帮助我理解这里发生了什么。也许这只是一个小小的愚蠢的事情,但我很失眠,真的很想完成这件事。

5 个答案:

答案 0 :(得分:2)

这个DIV是由脚本动态生成的,要删除它,你需要等到这个元素在DOM中可用,例如,如果由于某种原因其他答案不起作用:{或使用DOM ready handler}

$(window).on('load', function () {
    var interval = setInterval(function () {
        if ($("#rodape-ao-vivo").length) {
            $("#rodape-ao-vivo").remove();
            clearInterval(interval);
        }
    }, 100);
});

答案 1 :(得分:0)

嗯,也许你正试图在创建元素之前将其删除? (延迟有帮助,因为在那个时候元素被创建,你可以删除它)

答案 2 :(得分:0)

您可能尝试在元素存在之前删除它。添加一秒延迟会为浏览器提供足够的时间来渲染元素,因此您可以将其删除。但它不能保证工作,因为一秒钟可能不足以渲染该元素(例如,缓慢连接)。

所以你应该确保文档准备就绪,jQuery的方法是:

$(function() {
    $("#rodape-ao-vivo").remove();
});

或者您可以等待加载整个文档:

window.onload = function() {
    $("#rodape-ao-vivo").remove();
}

答案 3 :(得分:0)

如果您在加载页面时执行此操作,请使用document.ready();

包装您的代码
$(document).ready(function(){$("#rodape-ao-vivo").remove();});

答案 4 :(得分:0)

请确保在使用之前加载所有元素。将代码包装在函数中,以确保元素已附加到DOM

$("#rodape-ao-vivo").remove(); //will probably will give you an error.

$(function() {
    $("#rodape-ao-vivo").remove();
}

或者,

$( document ).ready(function() {
    $("#rodape-ao-vivo").remove();
})

或者,

jQuery( document ).ready(function( $ ) {
    $("#rodape-ao-vivo").remove();
});

或者,

window.onload = function() {
    $("#rodape-ao-vivo").remove();
}

但是当你这样做时,

setInterval(function() {
        $("#rodape-ao-vivo").remove();
}, 1000);

这将为你的DOM提供加载元素的时间。所以它工作正常。但是不使用setInterval你可以使用上面列出的函数