jQuery: «.children» против «.find» + «.live» - PullRequest
0 голосов
/ 26 февраля 2012

Здесь есть кусочки кода:

HTML:

<div class="thematicHeaderBox group">
 <h3 class="thematicHeader group">SMTH</h3>
 <button class="activatedUsual" style="float: right; ">on</button>
</div>

JS, НЕ работают:

attachEvents(
 $(".thematicHeaderBox").children(".activatedUsual"),
 self.elem.box.thematic.settings.event
);

JS, РАБОТАЕТ:

attachEvents(
 $(".thematicHeaderBox").find(".activatedUsual"),
 self.elem.box.thematic.settings.event
);

Функция attachEvents:

function attachEvents (elems, data) {

    for(var p in data){
        if(data.hasOwnProperty(p)){
            elems.live(
                data[p].name,
                data[p].callback
            );
        }
    }
}

data - это массив имен событий объектов и обратных вызовов для использования.

Вопрос в том, почему правильно работает только второй вариант.

1 Ответ

1 голос
/ 26 февраля 2012

Метод .children() позволяет нам искать непосредственных потомков этих элементов в дереве DOM и создавать новый объект jQuery из соответствующих элементов.

Непосредственные дети означают один уровень иерархии. В вашем случае .activatedUsual не является непосредственным потомком «.thematicHeaderBox».

...