2014-12-22 4 views
3

Я использую самозагрузки вкладки, и я хотел бы сделать некоторые функции с JavaScript, если LI нажата, но с условным, если он активен, ничего не делать, иначе это сделать ...JQuery, если имеет класс вопрос

Я пришел с этим кодом, чтобы проверить, если он has a class="active" since bootstrap tabs adds class="active" to LI for the active tab, но он не работает, он всегда возвращает true, что я делаю неправильно здесь?

код

var i = $("li").hasClass("active"); 

$("li").click(function() {    
    if (i == true) { 
     console.log("the tab is already active"); 
    } 
    else { 
     console.log("selected"); 
    }  
}); 

здесь jsfiddle demo

ответ

2

Проверить hasClass для щелкнули Li:

$("li").click(function() {    
    if ($(this).hasClass('active')) { 
     console.log("the tab is already active"); 
    } 
    else { 
     console.log("selected"); 
    }  
}); 
+1

работы thannks .. – skyline33

3

Использование $(this) для принятого текущего объекта

$("li").click(function() { 

    if ($(this).hasClass("active")) { 
     console.log("the tab is already active"); 
    } 
    else { 
      console.log("selected"); 
    } 

}); 

Fiddle

1
$("li").click(function() {    
    if ($(this).hasClass("active")) { 
     console.log("the tab is already active"); 
    } 
    else { 
     console.log("selected"); 
    }  
}); 
2

Потому что $ ("Ли") возвращает все теги Li. И начальное состояние первой вкладки li активно, поэтому переменная i всегда верна.

Изменение кодов на то, что @Bhojendra Sah написал будет работать.

+0

упс новичок в JavaScript не знал. Спасибо за информацию – skyline33

2

Вы можете попробовать это, а также для динамических элементов:

$(document).on('click', "li.active", function (e) { 

    console.log("the tab is already active"); 

}).on('click', "li:not(.active)", function (e) { 

    console.log("selected"); 

}); 

Example

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