jquery中的条件代码元素或变量

jquery中的条件代码元素或变量,jquery,conditional,Jquery,Conditional,我有一个变量,我不想影响条件,也不想在必要时充电(在本例中为DIV#sidebar) 我的代码是: var top = $('#sidebar').offset().top - parseFloat($('#sidebar').css('margin-top').replace(/auto/, 0)); var _height = $('#sidebar').height(); var _original_top = $('#sidebar').offset().top; $(window).s

我有一个变量,我不想影响条件,也不想在必要时充电(在本例中为DIV#sidebar)

我的代码是:

var top = $('#sidebar').offset().top - parseFloat($('#sidebar').css('margin-top').replace(/auto/, 0));
var _height = $('#sidebar').height();
var _original_top = $('#sidebar').offset().top;
$(window).scroll(function(event) {
    var y = $(this).scrollTop();
    var z = $('footer').offset().top;
    if (y >= top && (y + _height) < z) {
        $('#sidebar').removeClass('stuck-bottom').addClass('fixed');
    } else {
        if ((y + _height) > z) {
            $('#sidebar').removeClass('fixed').addClass('stuck-bottom');
        }
        else $('#sidebar').removeClass('stuck-bottom').removeClass('fixed');
    }
});

如果问题是
If
始终执行代码,则需要更改检测
#sidebar
是否存在的方式。这可能是因为
$(“#边栏”)
通常会计算为true,即使没有匹配的元素,因为
$()
返回有效的jQuery对象。要使条件仅在
#侧栏
实际存在时成功,请尝试:

if ($('#sidebar').length) { ... }
但是,如果您的问题是即使存在
#sidebar
,条件也永远不会成功,那么您的代码可能会在加载DOM之前被执行。您需要将代码包装在
$.ready()
函数中,以便在下载、解析和呈现页面之前不会执行:

jQuery(function($) {
    if ($('#sidebar').length) { ... }
});

就像你想调节多个项目一样。。。如果($('#gallery ul')|$('#platos ul')|$('#live ul')){..},再次检查length属性以确保获得预期结果:如果($('#gallery ul')。长度|$('#platos ul')。长度|$('#live ul')。长度){..}
jQuery(function($) {
    if ($('#sidebar').length) { ... }
});