Что не так с моим кодом?

#jquery

#jquery

Вопрос:

У меня есть 4 ссылки, при нажатии на каждую ссылку я беру индекс этой ссылки. У меня получается index 1 = 1, 2, 3 4 вот так. По моему мнению, когда пользователь нажимает на ссылку, индексированный ‘li’ должен исчезнуть, сброс должен исчезнуть. итак, какая бы ссылка не была нажата в соответствии с индексом ссылки 1, она должна исчезнуть, остальное не должно отображаться в представлении. для этого я написал этот код, но он не работает. что не так с моим кодом?

 $('#b-fmg-slider a').each(function(index){
    $(this).click(function(e){
        $('#b-fmg-slider a').removeAttr('class');
        $('#b-fmg-slider ul li').fadeOut();
         $('#b-fmg-slider ul li',':nth-child(' index 1 ')').fadeIn();
    })    
})
  

может ли кто-нибудь сказать, является ли то, что я здесь делаю, неправильным?

заранее спасибо.

Комментарии:

1. Вам не нужно использовать .each() при назначении обработчиков событий. Simply $('#b-fmg-slider a').click(function... сделает то же самое.

Ответ №1:

Когда вы передаете второй параметр, вы фактически предоставляете jQuery контекст для работы

 $('#b-fmg-slider ul li',':nth-child(' index 1 ')').fadeIn();//does not work
  

Просто используйте индекс и фильтр

 var i = $(this).index();
$('#b-fmg-slider ul li:eq('   i   ')').fadeIn();
  

Вот простая скрипка:http://jsfiddle.net/WU7Tt /

Комментарии:

1. Я бы упростил это до $('#b-fmg-slider li').eq(i).fadeIn(); ; впрочем, это не важно.

Ответ №2:

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

Что касается того, почему ваш код неправильный, вы используете два отдельных селектора (если вы разделяете их запятой, они являются отдельными селекторами).

Ответ №3:

Попробуйте что-то вроде этого:

 $('#b-fmg-slider a').click(function (e) {
  $('#b-fmg-slider ul li').fadeOut();
  $(this).parent('li').next('li').fadeIn();
});
  

Вычеркиваем все li-ы, а затем находим li, на который вы нажали (если он не является прямым потомком, используйте parents() вместо parent()), затем находим следующий за ним — чтобы вписать его.

Комментарии:

1. Есть только один родительский элемент, вам не нужно передавать строку.