Показать сообщение отдельно
  #15 (permalink)  
Старый 03.08.2014, 19:17
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от sergej_savelev Посмотреть сообщение
Странно, вроде бы как работает, но я не могу понять как. Что делает andSelf()? Вроде бы кода раз два и обчёлся а в голове хаос, неразбериха... Ещё не могу понять как :has() работает, даже догадаться не получается.
точнее, даже так:
$('h2').each(function (i) {
  
  $(this).
    css('color', 'red').
    text('h2: ' + i).
  
      parents('div:last').andSelf().
  
        prev('h1, div:has(h1)').
  
          text('h1: ' + i).
          css('color', 'blue');
  
});




теперь поясню:

$('h2').each(function (i) {
  
  $(this).
    css('color', 'red').
    text('h2: ' + i).
  
*!*
      parents('div:last').andSelf().
*/!*
  
        prev('h1, div:has(h1)').
  
          text('h1: ' + i).
          css('color', 'blue');
  
});


Эта строчка найдёт DIV на самом верхнем уровне вложенности, считая от h2... (это не всё)

выделен жёлтым:

вот:

ещё:


и поместит в список к найденному элементу и сам элемент h2 (andSelf).

....
Далее,


$('h2').each(function (i) {
  
  $(this).
    css('color', 'red').
    text('h2: ' + i).
  

      parents('div:last').andSelf().

 *!* 
        prev('h1, div:has(h1)').
 */!*
 
          text('h1: ' + i).
          css('color', 'blue');
  
});


Пройдётся по элементам предыдущей выборки (div на верхнем уровне, или сам h2) и найдёт предыдущий h1, или div, внутри которого есть h1

в инете есть документация по селектору has, и по всем методам ...
Ответить с цитированием