2

我正在为这个网站制作一个greasemonkey脚本:http: //tinyurl.com/websiteasdasd我想删除元素rodape-ao-vivo,问题是这样做$("#rodape-ao-vivo").remove();不起作用,但是,如果我做类似的事情

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

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

4

5 回答 5

2

此 DIV 由脚本动态生成,要删除它,您需要等到此元素在 DOM 中可用,例如,如果由于某种原因其他答案不起作用:{或使用 DOM 就绪处理程序}

$(window).on('load', function () {
    var interval = setInterval(function () {
        if ($("#rodape-ao-vivo").length) {
            $("#rodape-ao-vivo").remove();
            clearInterval(interval);
        }
    }, 100);
});
于 2013-09-18T10:57:08.080 回答
0

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

于 2013-09-18T10:55:48.603 回答
0

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

所以你应该确保文档已经准备好,jQuery 的方法是:

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

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

window.onload = function() {
    $("#rodape-ao-vivo").remove();
}
于 2013-09-18T10:56:05.527 回答
0

如果您在页面加载时执行此操作,则使用 document.ready() 包装您的代码;

$(document).ready(function(){$("#rodape-ao-vivo").remove();});
于 2013-09-18T10:56:34.140 回答
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

于 2013-09-18T11:00:40.750 回答