如何在此脚本中添加多个ID [需要语法]

时间:2016-01-03 21:48:32

标签: javascript jquery html url-redirection

我有以下脚本:

<script type='text/javascript'>
    //<![CDATA[
    $(document).ready(function() {
            setInterval(function() {
                if ($('#wrapper').css('visibility') == 'hidden') {
                    document.location.href = "http://www.example.com";
                }
            }, 3000)
        })
        //]]>
</script>

您看到只使用 #wrapper ,我想添加更多两个ID #footer #sidebar

注意:我可以为每个id创建单独的javscript,但这是内存使用者,大量的页面加载和许多javascripts。

所以我想问一下,如果有任何方法可以在该脚本中添加多个ID,请分享我给出的两个ID。感谢。

3 个答案:

答案 0 :(得分:2)

您可以在一次调用jQuery中包含multiple selectors

$('#wrapper, #footer, #sidebar')

但是,对.css()的结果调用只会返回结果集中的第一个元素。但您可以轻松地在结果集上调用.each()

$('#wrapper, #footer, #sidebar').each(function () {
    if ($(this).css('visibility') == 'hidden') {
        document.location.href = "http://www.example.com";
    }
});

或者甚至可能是这样的:

var elements = $('#wrapper, #footer, #sidebar');

setInterval(function() {
    for (var i = 0; i < elements.length; i++) {
        if ($(elements[i]).css('visibility') == 'hidden') {
            document.location.href = "http://www.example.com";
        }
    }
}, 3000)

这样您就不需要每次都重新查询DOM(除非您希望这些元素发生变化)。

答案 1 :(得分:0)

这是你的意思吗?

<script type='text/javascript'>
var ids= ["#wrapper", "#footer", "#sidebar"];
for (var i = 0 ; i < ids.length ; i++) {
    $(document).ready(function() {
        setInterval(function() {
            if ($(ids[i]).css('visibility') == 'hidden') {
                document.location.href = "http://www.example.com";
            }
        }, 3000)
    })
}
</script>

答案 2 :(得分:0)

    //if any of them are hidden, do your stuff
    if ($('#wrapper, #body, #sidebar').filter(':hidden').length > 0) {
        document.location.href = "http://www.example.com";
    }