2009-08-25 2 views
0

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

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

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

Там простой способ сделать это с помощью JQuery, так что я предполагаю, что это существует в прототипе

ответ

2

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

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

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

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

+0

+1. Хотя все равно следует упомянуть, что лучше всего просто сделать $ ('d4'), что эквивалентно вашему примеру. – Triptych

+0

Согласовано. Мой подход здесь только усиливает отношение p3-> d4 от вопроса, но, как указывали другие ответы, идентификаторы должны быть сингулярными, и в этом случае $ ('d4') будет адекватным. –

1

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

$('d4') 

Если ваши идентификаторы не являются уникальными, они не являются идентификаторами ... И они не должны использоваться в качестве «иД» атрибут вашей дивы ...


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

p1 
    d1 
    d2 
p2 
    d1 
    d2 
    d3 
p3 
    d1 

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

Немного похоже на это, я полагаю:

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

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

$$ ('# p1 .d2');

т.е.

  • p1 = элемент с идентификатором = p1

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


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

1

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

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

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

$('d4'); 
Смежные вопросы