观察ajax代码的点击按顺序检查元素

时间:2012-01-26 23:09:20

标签: javascript ajax prototypejs

我有一个问题,我需要文档观察点击功能(或类似的东西)从子节点按顺序获取元素。原因是我希望在子元素上有e.stopPropagation(),但是父对象仍然会调用,因为它是第一个在线。

例如:

   <script type="text/javascript"> 
    document.observe('click', function(e, el) {  
        if (el = e.findElement('.parent a')) { 
            e.stopPropagation();
        }
        if (el = e.findElement('.parent')){ 
            alert('parent');
        }
    });
    </script> 
    <div class="parent">
        <a href="test.html" target="_blank">Child Click Function</a>
        Parent Click Function
    </div>

在此示例中,首先找到父级,因此会调用警报。我必须这样做的原因而不是element.observer是它的Ajax生成的内容和Prototype似乎没有像jQuery一样的live()函数。

有没有人为此工作?

感谢。

2 个答案:

答案 0 :(得分:0)

Prototype肯定有一个.live()等价物,它被称为Event.on()。它也可以作为实例方法Element#on()

document.on('click', '.parent', function(event, element) {
    if (!event.findElement('.parent a')) {
        alert('parent');
    }
});

答案 1 :(得分:0)

您正在观察“文档”,您的事件e的currentTarget是文档。

'。您的文档中存在parent a'和'.parent',因此el.findElement('。parent a')和e.findElement('。parent')将始终返回一个元素。

首先在您的脚本中找不到.parent,但是当您输入第一个if时,您不会停止该过程(或使用if / else语句)。因此,该过程继续,脚本在文档中找到.parent元素。

你能解释一下你想做什么吗?你为什么要让这个活动停止冒泡?

不过:顺便说一下: 1)在脚本中未定义el。 2)当你使用findElement()时,你在脚本中使用“=”而不是“==”;