JQuery двоеточия селекторы - PullRequest
       2

JQuery двоеточия селекторы

5 голосов
/ 07 августа 2011

В jQuery есть несколько селекторов двоеточия, таких как

: prev,: next,: last

Мой вопрос:

  1. Являются ли они действительно частью jQuery, потому что они на самом деле используются в элементах DOM?
  2. Кажется, у нас также есть эквивалентные методы в jQuery prev(), next(), last().Какова цель иметь 2 разных способа?

Любые базовые примеры были бы действительно хороши.

Ответы [ 4 ]

10 голосов
/ 07 августа 2011

jQuery не имеет селекторов :prev или :next, я понятия не имею, где вы с ними сталкивались. Однако есть селектор :last, а также :first, предоставляемый библиотекой селекторов Sizzle , используемой jQuery. Это нестандартный селектор, не являющийся частью CSS, поэтому он реализован в JavaScript.

Одной из целей селектора :last по сравнению с методом .last() является то, что вы можете использовать его для фильтрации элементов в середине последовательности селектора, как это (обратите внимание, что :last и :last-child не совпадают ):

$('.a > .b:last > .c')

Вместо того, чтобы писать цепочку таких методов:

$('.a').children('.b').last().children('.c');

Кстати, «селекторы двоеточия», на которые вы ссылаетесь, называются псевдоклассами (в разговорной речи, но неправильно называются «псевдоселекторы»).

2 голосов
/ 07 августа 2011

Вот как я сделал слайдер со всевозможными селекторами и обходами объектов.

$('#next').click(function () {
  if (!$('*').is(':animated')) {
    if ($('div.display:visible').is(':nth-child(3)')) {

      $('div.display:visible').fadeOut();
      $('div.display:first').fadeIn(function () {
        $(this).children().fadeIn();
      });

    } else {

      $('div.display:visible').fadeOut().next().fadeIn(function () {
        $(this).children().fadeIn();
      });
    }
  }

});

$('#prev').click(function () {
  if (!$('*').is(':animated')) {
    if ($('div.display:visible').is(':nth-child(1)')) {
      $('div.display:visible').fadeOut();
      $('div.display:last').fadeIn(function () {
        $(this).children().fadeIn();
      });

    } else {
      $('div.display:visible').fadeOut().prev().fadeIn(function () {
        $(this).children().fadeIn();
      });
    }
  }

});
1 голос
/ 07 августа 2011

Двоеточие представляет собой фильтр, подобный выбранному параметру в раскрывающемся списке, который я использовал бы $("select option:selected"), или чтобы получить отмеченный переключатель, я бы использовал $("input[type=radio]:checked");

Нет: prev и: nextфильтры, но вы можете найти полный список фильтров здесь http://api.jquery.com/category/selectors/

1 голос
/ 07 августа 2011
  1. да, они есть в документации
  2. иногда вы не всегда можете включить все в селектор или хотите выделить его.

например

$(".mylist").each(function(){
  $(this).css("color","red");
  $(this).next().show();
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...