2016-11-30 4 views
0

У меня есть следующий код в html. Я просто хочу удалить активный класс, когда мы нажимаем на другое li и добавляем активный класс в li, на который он нажимается.удаление атрибута класса из li по клику

<ul class="pagination" id="paginationUL"> 
    <li class="active"><a href="#">1</a></li> 
    <li onclick="javascript:selectThis()"><a href="#">2</a></li> 

Я попытался удалить класс первый и он не работает. Пожалуйста, предложите.

function selectThis() { 
    $('ul[class="pagination"] li[class="active"]').removeClass("active")); 
} 

редактировал сценарий и он работает.

ответ

0

Вы можете написать строку для связывания всех li элементов в этом меню. Селектор $(this) действует против элемента, нажатого, а при использовании .siblings() действует на всех остальных дочерних элементов li.

$('#paginationUL > li').click(function(){ 
 
    $(this).addClass('active').siblings().removeClass('active') 
 
})
.active { background: orange; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul class="pagination" id="paginationUL"> 
 
    <li class="active"><a href="#">1</a></li> 
 
    <li><a href="#">2</a></li> 
 
    <li><a href="#">3</a></li> 
 
</ul>

+0

Спасибо @jmcgriz. –

+0

Добро пожаловать, счастливы кодирования. – jmcgriz

+0

Я не уверен, что могу задать еще один вопрос, который здесь имеет отношение к этому. Как получить значение текущего активного li перед удалением или добавлением класса. Я пробовал этот путь. $ (this) .siblings(). find ('[class = "active"]'). first(). val() и $ (this) .siblings(). find ('[class = "active"]') .val() и $ (this) .siblings(). find ("active"). val(), все говорит undefined. –

1

Ваш селектор неверен. Использовать #paginationUL[class="pagination"] li[class="active"] или ul.pagination li.active или #paginationUL li.active

+0

Почему '#paginationUL [класс = "пагинация"] Ли [класс = "активный"]' вместо '#paginationUL li.active' – j08691

+1

Зачем указать класс для' # paginationUL'? по определению должен быть только один из них. – BenM

2

Ваши селекторы неверны. Вы должны использовать идентификатор (#) или класс (.) селектор:

$('#paginationUL li.active').removeClass("active"); 

Однако, вы лучше не использовать интрузивные обработчики событий, а скорее делать что-то вдоль линий следующее:

$('#paginationUL > li').on('click', function() { 
    $(this).addClass('active').siblings('.active').removeClass('active'); 
}); 

Последний пример применит класс active к элементу с щелчком и удалит его из любых других элементов в <ul>.

+0

Спасибо, Бен. Это сработало. –

1

Вы можете использовать что-то вроде этого

$("#paginationUL li").click(function() { 
    $(this).toggleClass("active"); 
    $(this).siblings().removeClass("active"); 
}); 
1

Если вы используете JQuery, это должно сделать это:

$('#paginationUL li').click(function(){ 
    $('#paginationUL li').removeClass("active"); 
    $(this).addClass('active'); 
}); 
Смежные вопросы