прототип рекурсивный - PullRequest
       20

прототип рекурсивный

0 голосов
/ 25 августа 2009

Я использую прототип и у меня есть некоторые div с id p1 p2 p3 ... В этих div у меня есть несколько div с id d1 d2 d3 ...

Я хотел бы использовать $, чтобы получить указанный элемент d в указанном элементе p.

Если мне дадут значения 3 и 4, я смогу перейти на $ ('p3'). $ ('D4') Этот синтаксис не работает, конечно.

Существует простой способ сделать это с помощью jQuery, поэтому я предполагаю, что он существует в прототипе

Ответы [ 4 ]

2 голосов
/ 25 августа 2009

К сожалению, функция $ прототипа не соединяется в цепочку, так как возвращает расширенный объект HTMLElement, а $ - это метод окна. Тем не менее, вы можете использовать функцию $$ вместе с селектором CSS для достижения этой цели:

$$('#p3 #d4').first(); // Element with id 'd4' that's a descendant of an element with id 'p3'

Хотя функция $$ возвращает расширенный объект HTMLElement, как и $, фактически она возвращает их массив, поскольку селектор CSS может потенциально соответствовать нескольким элементам.

Вы можете прочитать о CSS селекторах здесь .

1 голос
/ 25 августа 2009

Это должно сработать:

$('p3').select('#d4').first()

Опять же, если все ваши идентификаторы уникальны, как и должно быть, почему бы просто не сделать это:

$('d4');
1 голос
/ 25 августа 2009

Учитывая, что идентификатор («идентификатор») является (должен быть) уникальным, почему бы просто не использовать самый конкретный из имеющихся у вас идентификаторов - второй:

$('d4')

Если ваши идентификаторы не являются уникальными, они не являются идентификаторами ... И их не следует использовать в качестве атрибута "id" ваших элементов div ...


На самом деле, если у вас есть что-то вроде этого:

p1
  d1
  d2
p2
  d1
  d2
  d3
p3
  d1

Ваш "pX" может быть идентификатором (они уникальны), но ваш "dX" не должен быть идентификатором; Решением может быть использование класса для хранения информации "dX".

Немного похоже, я думаю:

id=p1
  class=d1
  class=d2
id=p2
  class=d1
  class=d2
  class=d3
id=p3
  class=d1

Затем вы будете использовать функцию $$ с селектором CSS: если вам нужен элемент с class = "d2" внутри элемента id = "p1", что-то вроде этого может работать:

$$ ('# p1 .d2');

т.е.:

  • p1 = элемент с id = p1

  • .d2 = элемент с классом, содержащим d2


Надеюсь, это понятно и поможет ...

0 голосов
/ 25 августа 2009
$('p3').select(new Selector('#d4'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...