2013-02-12 6 views
4

Привет я следующий ul li, которые отображают категории имя:Jquery добавить выбранный класс Li

<ul> 
<li class="selected" data-tab-id="0"></li> 
<li data-tab-id="12">...</li> 
<li data-tab-id="3">...</li> 
<li data-tab-id="15">...</li> 
<li data-tab-id="7">...</li> 
</ul> 

В JavaScript скрипты как последуйте:

<script type="text/javascript"> 
var cat_id = '<?=$this->catid?>' 

$(document).ready(function() { 

}); 
</script> 

В настоящее время страница в индексе, так первый li data-tab-id="0" будут выбраны класс также var cat_id ничего не вернет. Теперь, когда пользователь перейдет на другую вкладку, такую ​​как data-tab-id="12", var cat_id будет возвращать значение 12, как я могу удалить класс, выбранный из li по умолчанию, и заменить его на data-tab-id="12". Благодаря

+0

im не уверен, что вы имеете в виду, но это то, как вы добавляете классы $ ('li'). addClass ('selected'); и $ ('. selected'). removeClass ('selected'); – iConnor

+0

Возможный дубликат [Выбор элемента по атрибуту data] (http://stackoverflow.com/questions/2487747/selecting-element-by-data-attribute) – epascarello

+0

Просто примечание, я заметил, что вы используете PHP, коротких тегов "выше в вашем коде. Помните об этих тегах, поскольку они недоступны при каждой установке PHP. Это параметр в файле 'php.ini', который не может быть включен во всех установках. Это может привести к ошибкам, связанным с переносимостью вашего кода. Придерживайтесь ' War10ck

ответ

1

addClass() использование и removeClass() для добавления и удаления класса соответственно. попробовать это

обновленный

var cat_id = '<?=$this->catid?>'; 
$('li').removeClass('selected'); 
$('li').each(function(){ 
    if($(this).attr('data-tab-id')==cat_id){ 
    $(this).addClass('selected'); 
    } 
}) 

обновленный без использования цикла ..

var cat_id = '<?=$this->catid?>'; 
$('li').removeClass('selected'); 
$('li[data-tab-id='+cat_id+']').addClass('selected'); 

fiddle here

updated fiddle

+0

Спасибо, я попробую ваши решения – d3bug3r

+0

уверен ... дайте мне возможность, если возникнут проблемы – bipen

+0

добавьте выбранный класс ко всем li .. – d3bug3r

1

использовать этот образец

$('ul li').click(function() { 
    $('ul li.selected').removeClass('selected'); 
    $(this).closest('li').addClass('selected'); 
}) 
+0

Плакат спрашивает, как выбрать его при загрузке страницы из переменной. Это не отвечает на это. – epascarello

+0

Давайте посмотрим ваш ответ, а затем, пожалуйста, epascarello, так как мне нужно то же самое :) – iConnor

+0

@ConnorMiles: посмотрите на вопрос, связанный с epascarello, выше. – Cerbrus

1

Предполагая list как идентификатор UL - только чтобы избежать проблем в случае, если у вас есть несколько UL вокруг страницы:

$("ul#list") 
    .find(".selected").removeClass("selected") 
    .end() 
    .find("[data-tab-id=" + cat_id + "]").addClass("selected"); 

Вы также можете сделать это в два JQuery называет, конечно:

$("ul#list .selected").removeClass("selected"); 
$("ul#list [data-tab-id=" + cat_id + "]").addClass("selected"); 
+0

Пропущает точку, где плакат говорит, что cat_id может быть пустым. Нужна инструкция if в коде. – epascarello

+0

Насколько я понимаю из вопроса, 'cat_id' пуст только при запуске, когда выбран' li' по умолчанию. Этот код не выполняется в этом контексте, но когда пользователь переходит на другую вкладку, поэтому устанавливается 'cat_id'. Если это не так, мне нужен лучший контекст из OP (например, когда этот код будет выполнен). – ZER0

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