2012-10-11 7 views
0

我有,我想不會影響條件或必要時DONOT收費,即一個變量時,不能在這種情況下,DIV#側邊欄有條件的代碼元素或變量的jQuery

我的代碼是:

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')) { ... } 
+0

放「驗證碼」在哪裏? – codingbiz

回答

2

如果問題是,你總是if執行的代碼,你需要改變你如何檢測是否#sidebar存在。這可能是因爲$('#sidebar')通常會評估爲true,即使沒有匹配的元素,因爲$()會返回有效的jQuery對象。要具備的條件時#sidebar確實存在只許成功,嘗試:

if ($('#sidebar').length) { ... } 

但是,如果你的問題是,條件永遠不會成功,即使#sidebar存在,你的代碼可以得到的DOM加載之前執行。你需要換你的代碼在$.ready()功能,因此它不執行,直到頁面已經被下載,解析和渲染:

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

而且你會爲多個項目調節? ... if($('#gallery ul')|| $('#platos ul')|| $('#live ul')){..} –

+0

再次檢查長度屬性以確保您' ('#gallery ul')。length || $('#platos ul')。length || $('#live ul')。length){...} – Kelvin

+0

謝謝你Kelvin :) –