如果= true,则停止jQuery函数

时间:2014-04-12 06:04:40

标签: javascript jquery html

我为我的新品牌创建了一个网站,作为我第一次与jQuery深入见面,我发现了一些与div状态有关的问题。代码中的if语句检查#homebutton的文本是否等于' blog'或者' home',然后为每个发出不同的scrollTop()命令。问题是我需要停止jQuery函数 - 例如,如果博客是文本,我不希望它运行该函数(这涉及将#homebutton的文本更改为home)然后运行if text = home if语句(因为文本已更改)。我需要一种方法来在它执行一个scrollTop()命令之后停止jQuery函数,或者我希望有人向我展示如何制作一个可以消除这个问题的IF语句。

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

        $("#askbutton").click(function() { 
            $("html, body").animate({ scrollTop: 0 }, "fast");
            $("#askpage").toggle("slow");
            $("#tumblrcontent").toggle("slow");
            $("#homebutton").text("HOME");
          });


        $(window).scroll(function() {
            var targetDiv = $('#homebutton');
            var matchHeight = $('#tumblrcontent').position().top;
            if($(document.body).scrollTop() >= matchHeight) {
                // this is where you're css amendments would be done
                if (targetDiv.text('BLOG')) {  targetDiv.text('HOME'); }
            } else {
                if (targetDiv.text('HOME')) { targetDiv.text('BLOG'); }
            }
        });

        $("#homebutton").click(function() { 
        if ($(this).text("HOME") && $("#tumblrcontent").css('display', 'none')){
                $("#askpage").fadeOut("slow");
                $("#tumblrcontent").fadeIn("slow");
                $("html, body").animate({ scrollTop: 0 }, "slow"); 
                $(this).text("BLOG");
                //if tumblrcontent is not shown and text says home, this means that #askpage will be showing.
        }

        if ($(this).text("HOME") && $("#askpage").css('display', 'none')){
                $("html, body").animate({ scrollTop: 0 }, "slow"); 

        }

        if ($(this).text("BLOG") && $("#askpage").css('display', 'none'))  {
            $(this).text("HOME");
            $('html,body').animate({scrollTop:$("#tumblrcontent").offset().top}, "slow");

        }

        });

2 个答案:

答案 0 :(得分:0)

我很难搞清楚你要做什么。让我们检查一下你的代码吧,我会告诉你代码的作用......

        if($(document.body).scrollTop() >= matchHeight) {

上面的语句说“如果文档正文的scrollTop位置大于或等于匹配高度变量,请执行下一组括号内的操作,直到else块。”

            // this is where you're css amendments would be done
            if (targetDiv.text('BLOG')) {  targetDiv.text('HOME'); }

这一行说“将targetDiv的文本值设置为字符串'BLOG'然后评估文本函数的返回值。如果这是真的,那么将targetDiv的text属性设置为字符串'HOME。'” / p>

我非常怀疑这是你的意思,因为这毫无意义。这可能是你的问题所在。几行之后,我看到了同样的问题:

            if (targetDiv.text('HOME')) { targetDiv.text('BLOG'); }

设置目标div文本值的值。你不是评估它。要评估该值,请改为:

            if (targetDiv.text() === 'HOME') { targetDiv.text('BLOG'); }

该行说“如果targetDiv的文本值是”HOME“,则将targetDiv的文本值设置为”BLOG。“

这是你想要做的吗?

答案 1 :(得分:0)

    $("#homebutton").click(function() { 

                    if ($(this).text =="HOME" && $("#tumblrcontent").is('display', 'none')){

                    }
}

Check here