перебрать всех потомков yui3 / javascript - PullRequest
0 голосов
/ 18 марта 2011

Я пытаюсь определить, происходит ли щелчок внутри определенного узла. Моя идея сделать это состоит в том, чтобы взять узел и перебрать все его потомки, проверяя, является ли каждый узел целью событий click.

Я не уверен, что лучший способ получить всех потомков указанного узла - это YUI3. Я готов сделать это просто на JS, если это сложно в yui3. Я также открыт для другого подхода, если у кого-то есть лучший способ сделать это.

Заранее спасибо за помощь.

Ответы [ 4 ]

1 голос
/ 23 марта 2011

var isChild = wrapperNode.contains (targetNode);

http://developer.yahoo.com/yui/3/api/Node.html#method_contains

0 голосов
/ 18 марта 2011

Мое текущее решение (в YUI3) на случай, если у кого-то возникнет такая же проблема.Не стесняйтесь размещать улучшения на нем.

   function isChild(targetNode, wrapperNode) {
        var descendants = wrapperNode.all('*');
        var counter = 0;
        descendants.each(function(node) {
            if(node == targetNode) {
                counter++;
            }
        });
        return (counter > 0) ? true : false;
    }
0 голосов
/ 22 марта 2011

Если я понимаю ситуацию, интересующий вас узел содержит некоторые узлы, которые могут получать клики.Если это так, событие click будет пузыриться до родительского узла, поэтому прослушивания щелчка по этому узлу должно быть достаточно.

Опять же, это может быть что-то более сложное, что вам нужно сделать, в этом случае, извинения, если я неправильно понял.

0 голосов
/ 18 марта 2011

То, что вы хотите создать, звучит очень похоже на делегирование кликов.

Я не делаю YUI, но вы можете прочитать о делегировании событий в YUI3 здесь:

http://www.yuiblog.com/blog/2009/11/13/event-delegation-3/

http://kickballcreative.com/yui/demos/event-delegation/

...