使用jquery检查元素是否经常出现类

时间:2014-04-23 19:42:36

标签: jquery javascript

我正在使用stickyJS在我的wordpress网站上创建一个粘性标题。我已经正确地排列了脚本,并且粘性工作正常。

我想要实现的是不断检查我为sticky设置的nav元素是否有一个名为“is-sticky”的类,如果是这样,那么改变一些CSS。

以下是我已经拥有的代码:

function stickyInit($)
{
$("#site-navigation").sticky({topSpacing:0});

window.setInterval(check_sticky,500);

function check_sticky(){
    if($("#site-navigation-sticky-wrapper").hasClass("is-sticky")){
        console.log ("Do Something");
    }
}
}

jQuery(document).ready(function ($) {
stickyInit($);
});

这是我已将队列设置为粘贴的文件中的所有代码。

正如你所看到的,我已经使用setInterval来尝试创建一个循环来不断测试“#site-navigation-sticky-wrapper”元素,看它是否有上面提到的类。

此代码有效,我在firebug控制台中收到消息,但我只得到一次而不是重复。

所以我的问题是,我如何不断测试这个元素,看看它是否具有“粘性”类,所以我可以替换nav css吗?

此外,当元素“is-sticky”未设置在元素上时(在我滚动回到顶部之后),如何将导航设置回原始位置?或者它会这样做吗?

1 个答案:

答案 0 :(得分:3)

检查this fiddle - 当“粘性”时,它会反复触发。上课是活跃的滚动到停止时,导航位置会自动恢复到以前的状态。

// Your code
function stickyInit($){

    $("#site-navigation").sticky({topSpacing:0});

        function check_sticky(){
            if ( $("#site-navigation-sticky-wrapper").hasClass("is-sticky") ) {
                console.log ("Do Something");
            }
        }

    window.setInterval(check_sticky,500);
}

jQuery(document).ready(function ($) {

    stickyInit($);

});