jQuery's:nth-child и:first-child выбирают неправильный элемент

Я использую комбинацию Soundmanager2 и RoyalCarousel, чтобы заставить работать карусель в стиле плейлиста. Теперь моя цель - сделать так, чтобы при выборе определенного слайда, с помощью кнопок "назад" / "вперед" или ссылок "пропустить", воспроизводилась соответствующая песня. Это работает для всех, кроме первого слайда, который последовательно запускает последний слайд, чтобы начать воспроизведение. Запуск последнего слайда также запускает последний слайд, так что это не так, как эти два перевернуты. Чтобы увидеть это в действии. http://ably.ca/hootch

$(".rsNavItem").live('click', function(){
  var id = $(this).index() + 1;
  $(".rsContainer div:nth-child("+ id +") .ui360 .sm2-360btn").click();
});

Я здесь все проверил и перепроверил:nth-child(1) каждый раз выбирает:nth-child(9). Даже тестирование на id == 1 и использование первого ребенка не работает... Есть идеи?

3 ответа

Решение

Попробуй это

var rsContainer = $('.rsContainer');
$('.rsNavItem').live('click', function(){
    var index = $(this).index();

    $('.rsSlide:eq(' + index + ') .ui360 .sm2-360btn', rsContainer).click();
});

Когда вы нацеливаетесь

$(".rsContainer div:nth-child(1) ...

Вы получаете не менее 37 результатов!

Это все div, которые являются первыми дочерними элементами своих родителей, какими бы глубокими они ни были.

Я думаю, что ты имеешь в виду

$(".rsContainer > div:nth-child(1) ...

(прямой потомок, не любой потомок уровня)

Я нашел решение, но мне не нравится...

$(".rsNavItem").live('click', function(){
  var id = $(this).index();
  soundManager.stopAll();
  $(".rsContainer").children().each(function(){
      if ($(this).index() == id) {
          $(this).find(".ui360 .sm2-360btn").click();
          return false;
      }
  });
});

Вместо того, чтобы использовать: nth-child, я решил попробовать перебрать все дочерние элементы и проверить индекс ссылки "skip-to" по отношению к индексу слайдов, а затем использовать find() для нажатия кнопки, как и раньше... мне это не нравится, потому что это цикл... кажется, что это скорее удар производительности по сравнению с:nth-child...

Другие вопросы по тегам