jquery中的条件代码元素或变量
我有一个变量,我不想影响条件,也不想在必要时充电(在本例中为DIV#sidebar) 我的代码是: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
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) { ... }
});