2010-08-19 1 views
0

Я использую следующий код для управления DIV с идентификатором «боковым»JQuery только огнь, если DIV # боковая панель существует на странице

var top = $('#sidebar').offset().top - parseFloat($('#sidebar').css('marginTop').replace(/auto/, 0)); 
      $(window).scroll(function (event) { 
       // what the y position of the scroll is 
       var y = $(this).scrollTop(); 

       // whether that's below the form 
       if (y >= top) { 
        // if so, ad the fixed class 
        $('#sidebar').addClass('fixed'); 
       } else { 
        // otherwise remove it 
        $('#sidebar').removeClass('fixed'); 
       } 
       }); 

Однако, когда страница, которая ода не содержит Div # врезки оно проливает out error #sidebar is null (потому что его нет!)

Как я могу преобразовать этот код только в том случае, если на странице есть боковая панель div #?

+0

Не совсем прямо на вопрос, но вы можете заменить весь контент прокрутки на это: '$ ('# sidebar'). ToggleClass ('fixed', $ (this) .scrollTop()> = top);' :) –

+0

@Nick Спасибо! Всегда приятно очищать код. Это было на самом деле из учебника, который я нашел здесь: http://jqueryfordesigners.com/fixed-floating-elements/ –

ответ

2

Если я не ошибаюсь, вы можете использовать

if ($('#sidebar').length > 0){ 

    ............. 

} 

для достижения этой цели.

+0

Спасибо, ребята, обработано! –

1
if($('#sidebar').length > 0) 
{ 
//your code here 
} 
0

Вы можете попробовать это.

if($('#sidebar').size > 0){ 

//your code 

} 
+1

'.size()' это метод ... который действительно просто вызывает '.length' :) –

2

Вы можете уменьшить ваш код вниз с помощью .length, чтобы проверить, если он существует и кэшировать селектор, например:

var sb = $('#sidebar'); 
if(sb.length) { 
    var top = sb.offset().top - parseFloat(sb.css('marginTop').replace(/auto/, 0)); 
    $(window).scroll(function() { 
    sb.toggleClass('fixed', $(this).scrollTop() >= top); 
    }); 
}​ 

.length возвращает количество элементов селектор найденных, если это не было его '0 или false для целей нашей проверки if(). После этого мы используем .toggleClass(class, bool) для более простого добавления или удаления класса на основе прокрутки positon.

 Смежные вопросы

  • Нет связанных вопросов^_^