我如何将条件语句放入此JavaScript?

时间:2014-03-19 00:30:29

标签: javascript jquery conditional-statements

我想在下面的代码中使用条件语句。基本上,我想做这样的事情:

if (home page) insert 655, if (not home page) insert 391

主页的body元素有一个home类,所以我可以使用.home #sidebar来定位主页边栏。

jQuery(window).scroll(function () {
    var threshold = 655;
 if (jQuery(window).scrollTop() >= 655)
     jQuery('#sidebar').addClass('fixed');
  else
        jQuery('#sidebar').removeClass('fixed');
});

这是我做错的不正确的尝试(请不要笑):

jQuery(window).scroll(function () {
    var threshold = if (is_home()) { 655 } else { 391 };
 if (jQuery(window).scrollTop() >= if (is_home()) { 655 } else { 391 })
     jQuery('#sidebar').addClass('fixed');
  else
        jQuery('#sidebar').removeClass('fixed');
});

有人能帮助我吗?

编辑:这是完整的代码:

/*-----------------------------------------------------------------------------------

    Custom JS - All custom front-end jQuery

-----------------------------------------------------------------------------------*/

/*-----------------------------------------------------------------------------------*/
/*  Let's dance
/*-----------------------------------------------------------------------------------*/

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

/*-----------------------------------------------------------------------------------*/
/*  Fixed Sidebar
/*-----------------------------------------------------------------------------------*/

    var threshold = jQuery(document.body).hasClass("home") ? 655 : 391;
    if (jQuery(window).scrollTop() >= threshold) {
        jQuery('#sidebar').addClass('fixed');
    } else {
        jQuery('#sidebar').removeClass('fixed');
    }

/*-----------------------------------------------------------------------------------*/
/*  Pesky YouTube Videos
/*-----------------------------------------------------------------------------------*/

    window.onload = function() {
        var frames = document.getElementsByTagName("iframe");
        for (var i = 0; i < frames.length; i++) {
            frames[i].src += "&wmode=opaque";
        }
    }

/*-----------------------------------------------------------------------------------*/
/*  Portfolio Filtering
/*-----------------------------------------------------------------------------------*/

    if(jQuery().isotope) {

        $container = jQuery('#masonry');

        $container.imagesLoaded( function() {

            $container.isotope({
                itemSelector : '.item',
                masonry: {
                    columnWidth: $(document).width() > 1035 ? 240 : 320
                },
                getSortData: {

                    order: function($elem) {
                        return parseInt($elem.attr('data-order'));
                    }

                },
                sortBy: 'order'
            }, function() {

                // Isotope Chrome Fix   
                setTimeout(function () {        
                    jQuery('#masonry').isotope('reLayout'); 
                }, 1000);

            });


        }); 

        // filter items when filter link is clicked
        $container = jQuery('#masonry');

        jQuery('#filter li').click(function(){

            jQuery('#filter li').removeClass('active's);
            jQuery(this).addClass('active');

            var selector = jQuery(this).find('a').attr('data-filter');

            $container.isotope({ filter: selector });

            return false;

        });


    }

/*-----------------------------------------------------------------------------------*/
/*  We've finished dancing!
/*-----------------------------------------------------------------------------------*/

});

4 个答案:

答案 0 :(得分:3)

您可以使用.hasClass()查看是否是主页:

if (jQuery(document.body).hasClass("home")) {
    // home page here
} else {
    // not home page here
}

当然,如果你只是想根据它是否是主页设置你的阈值:

var threshold = jQuery(document.body).hasClass("home") ? 655 : 391;
if (jQuery(window).scrollTop() >= threshold) {
    jQuery('#sidebar').addClass('fixed');
} else {
    jQuery('#sidebar').removeClass('fixed');
}

答案 1 :(得分:1)

您滥用三元运营商;不需要if

var threshold = (is_home()) ? 655 : 391;
if($(window).scrollTop() >= threshold)
    jQuery('#sidebar').addClass('fixed');
else
    jQuery('#sidebar').removeClass('fixed');

所有其他答案已经完全解释了使用&#34; .hasClass&#34;,所以我将离开你的&#34; is_home()&#34;到位。

答案 2 :(得分:0)

使用三元条件运算符:

if (jQuery(window).scrollTop() >= ((is_home()) ? 655 : 391))

答案 3 :(得分:0)

您可以使用内联条件。替换此行

var threshold = if (is_home()) { 655 } else { 391 };

有了这个

var threshold = (is_home() ? 655 : 391);

与其他案件相同的gose