我有一个问题,我需要文档观察点击功能(或类似的东西)从子节点按顺序获取元素。原因是我希望在子元素上有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()函数。
有没有人为此工作?
感谢。
答案 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()时,你在脚本中使用“=”而不是“==”;