2015-03-03 2 views
0

Есть мой код, который добавляет класс «nav-pills» к элементу с «nav-tabs» класса, когда ширина окна ниже 768 пикселей.jquery cant get element

$(window).on('resize', function() { 
$('.nav-tabs').toggleClass('nav-pills', $(window).width() < 768); 
}); 

Я хочу, чтобы предупредить кое-что, когда пользователь нажимает ссылку внутри DOM элемента с этими 2 классами (нав-закладках и нав-таблетки). Но ничего не случилось.

$(".nav-tabs.nav-pills a").click(function(){ 
    alert('test'); 
}); 

JQuery toggleClass работает отлично и добавить «нав-таблетку» к элементу «СЧ Вкладки» (я проверил это в хромированных инспекторах), но предупреждения не будет работать.

Кто-нибудь может мне помочь?

+0

I * действительно * рекомендую прочитать учебник JQuery: * «Важно отметить, что .on() может создавать только прослушиватели событий на элементах, которые ** существуют в то время, когда вы настраивали слушателей **.» * (Http://learn.jquery.com/events/event- основы /) –

+0

Ху Бармар? Это странный выбор для закрытия как дубликат ... –

ответ

0

Проблема заключается в том, что привязка выполняется один раз, до добавления класса nav-pills. Таким образом, вы привязываетесь к пустующему набору.

Вы можете связать на ".nav-tabs a" и испытания в обратный вызов, если есть элемент в $(this).closest(".nav-tabs.nav-pills"), но чистое решение было бы использовать on и делегирование:

$(document).on("click", ".nav-tabs.nav-pills a", function(){ 
+0

Избегайте 'body' для делегирования, чтобы избежать шанса на ошибку« 0-вычисленная высота ». Всегда по умолчанию используется 'document'. –

+0

@TrueBlueAussie да, обновлено ... –