Получение самого дальнего (самого старого) предка по имени класса с помощью Prototype - PullRequest
0 голосов
/ 23 марта 2012

Сегодня я потратил слишком много времени на это.Давайте предположим, что у меня есть что-то вроде этого:

<div id="p1" class="hit">
<div id="p2" class="no-hit">
<div id="p3" class="hit">
<div id="p4" class="no-hit">
<div id="p5" class="hit">
el
</div></div></div></div></div>

Итак, мой элемент передается в функцию, и если он является потомком элемента .hit, я хочу, чтобы el равнялся самому старому предку скласс попаданий (в данном случае # p1).

В jQuery это было бы так же просто, как использовать el.parents (". hit") и указать на последний, но я работаю над устаревшим кодоми должен использовать прототип.Следующий код работает на jsfiddle, но вызывает ошибку недопустимого токена на производстве:

if(item.up('.hit') != undefined){
  while(item.up('.hit') != undefined){
    item = item.up('.hit');
  }
}

Пожалуйста, прототип, скажите, что у вас есть простой способ сделать это.

Ответы [ 2 ]

0 голосов
/ 27 марта 2012
if(typeof item.up('.hit') != 'undefined') {
  while(typeof item.up('.hit') != 'undefined') {
    item = item.up('.hit');
  }
}
0 голосов
/ 23 марта 2012

Prototype и jQuery похожи в этом отношении (по крайней мере, в моей интерпретации документации). Вы также сможете использовать метод .up в Prototype.

Код, который вы предоставили, должен работать и с Prototype. Вы можете увидеть пример здесь .

Если нет, вы всегда можете попробовать .previous метод.

...