Наблюдатель за кликом в Prototype - PullRequest
0 голосов
/ 05 марта 2010

У меня есть страница, которая содержит несколько элементов div (каждый с уникальным идентификатором и одним и тем же классом 'parent'). Под каждым родительским div находится div с классом child и уникальным идентификатором name -child. Этот DIV при загрузке страницы пуст.

Каждый раз, когда вы щелкаете по родительскому DIV, выполняется следующий код.

$$('div.parent').each(function(s){
    $(s).observe('click', function(event){
        event.stop();
        var filer = $(s).readAttribute('filer');
        var currentElement = $(s).id;
        var childElement = currentElement + '-children';
        new Ajax.Updater ({success: childElement}, root + '/filers/interfacechildren', {
        parameters: {parentId: currentElement, filer: filer}
        });
    });
});

Конечно, возможно, что дочерний узел снова является родительским. Ответ выглядит следующим образом (Smarty с Zend Framework):

{foreach from=$ifaces item=interface}
    <div id="{$interface->name}" filer="{$interface->system_id}" class="parent">{$interface->name}</div>
    <div id="{$interface->name}-children" class="child"></div>
{/foreach}

Всякий раз, когда я нажимаю на "родительский" div, который загружен внутри дочернего элемента, ничего не происходит :( Любые предложения / исправления, как это исправить?

Ответы [ 2 ]

0 голосов
/ 08 марта 2010

Исправлено.
Я поместил код внутри функции и заставил его повторять себя на успешной работе. Таким образом, когда новые родители загружаются с помощью AJAX, функция наблюдателя учитывает новые созданные элементы div.

0 голосов
/ 05 марта 2010

Переместить event.stop () после Ajax.Updater?

...