CSS или jQuery получают элементы _w__ первокурсник определенного типа - PullRequest
4 голосов
/ 14 декабря 2011

Есть ли способ в CSS (IE7 +) или jQuery выбрать элементы, чей первенец имеет определенный тип, например, такой как следующий псевдокод, вы сможете выбрать все li с помощью первый ребенок a :

li:first-child(a)

Обновление

Я искал решение, предложенное @SLaks, потому что я хотел получить его в одном селекторе. Однако метод .parent () работает быстрее, см .: http://jsfiddle.net/c4urself/Qw8fX/

$("li > a:first-child").parent()

против

$("li:has(>a:first-child)")

Обновление 2

См. Различия в производительности между этими двумя методами здесь в jsPerf

http://jsperf.com/jquery-has-child-vs-parent-child-and-parent

Ответы [ 4 ]

4 голосов
/ 14 декабря 2011

CSS не может этого сделать, но jQuery может:

li:has(>a:first-child)

CSS не может этого сделать, потому что CSS был разработан для применения только вперед, когда браузер читает HTML. Всегда можно определить, какие правила CSS применяются к элементу немедленно , не ожидая дочерних элементов элемента или последующих братьев и сестер.

3 голосов
/ 14 декабря 2011

в jQuery $('ul li a:first-child').parent();

0 голосов
/ 14 декабря 2011

Я не думаю, что это возможно в CSS, но в jQuery вы хотели бы использовать filter().

Убедитесь, что вы фильтруете на основе contents(), а не children(), так как вы будетехочу видеть текстовые узлы.

$( function() {   
  $('li').filter( function() {
    return $(this).contents().first().is('a');
  }).each( function() {
    $('body').append($(this).text() + '<br/>');
  });
});

http://jsbin.com/olufan

Требуется немного больше кода, чем делает все это в селекторе jQuery, но производительность должна быть намного лучше.Селекторы jQuery действительно быстро работают только при указании одного термина.

0 голосов
/ 14 декабря 2011

Используя класс li: first-child psuedo, вы можете применить требуемый стиль к элементу li, который затем будет стилизовать вложенный в него элемент a.Взгляните на http://reference.sitepoint.com/css/pseudoclass-firstchild

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...