Prototype выберите класс, содержащийся в div - PullRequest
1 голос
/ 22 июня 2010

Я хотел бы использовать следующую функцию только для элементов "a", содержащихся в div "myDiv" .

Это код, который я использовал до сих пор:

$$('a[class="active"]').each(function(element) {
      element.removeClassName("active");
    });

1 Ответ

2 голосов
/ 22 июня 2010

Вы можете сделать это двумя способами:

1) Посмотрите на myDiv и затем используйте Element#select:

$('myDiv').select('a[class="active"]').each(...);

или

2) Используйте селектор идентификатора с селектором потомка с $$:

$$('#myDiv a[class="active"]).each(...);

Если вы хотите только прямой дочерний (не потомок), вы можете использовать дочерний селектор (обратите внимание на >):

$$('#myDiv > a[class="active"]).each(...);

Не по теме # 1: Обычный способ написать a[class="active"] в селекторе будет a.active, например, "$('myDiv').select('a.active').each(...);".

Не по теме # 2: Вы также можете посмотреть на функцию invoke, которая предназначена для вызова одной и той же функции для каждого элемента в объекте Enumerable (например, "$('myDiv').select('a[class="active"]').invoke('removeClassName', 'active'); ").invoke это красиво, коротко и выразительно, но это медленнее, чем делать это самостоятельно, как вы.(Это имеет значение только тогда, когда вы попадаете на тысячи элементов.)

...