在Prototype中“点击”观察者

时间:2010-03-05 10:01:35

标签: zend-framework prototypejs smarty observer-pattern

我有一个页面,其中包含几个div(每个div都有一个唯一的ID和同一个类,'parent')。在每个“父”div下面,是一个带有“child”类和唯一ID名称-child的div。此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}
        });
    });
});

当然,子节点可能又是父节点。响应看起来像这样(Smand with 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 :(得分:0)

在Ajax.Updater之后移动event.stop()?

答案 1 :(得分:0)

固定。
我把代码放在一个函数中,并使它自己在onSuccess上递归。这样,当新父节点加载AJAX时,观察者函数会考虑新创建的div。