我想在同一页上使用不同形式的事件委托。但是,我在尝试提交表单时遇到了一个有趣的问题。Javascript:了解事件委托处理
我试着在一个表单上(点击提交按钮)“点击”,并且完全知道事件委托在本表中固有地设置了“点击”。
但是,问题来自事实上'click'事件实际上是在整个页面上设置的,而不仅仅是表单或按钮元素。所以无论我点击哪个页面,该表单的'click'事件都会被触发。所有浏览器都会发生这种情况。
“更改”事件也发生了同样的情况。当我在表单上设置“更改”事件时,会触发表单的子字段以及特定表单节点外的其他字段。
所以虽然我知道之前已经有questions询问过事件委托,但他们并没有真正回答这个问题。这是否是一个问题?也许这是事件代表团打算如何工作?但如果是这样,那么对于整个文档触发的事件是不是浪费内存?解决办法是什么?
此外,是否有一个跨浏览器的方式来停止传播纯JavaScript?我发现最好的是在Quirksmode.org:
function doSomething(e)
{
if (!e) var e = window.event;
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
}
我知道我可以按照类型过滤的事件触发时,但是是唯一一个可以做什么?请帮我理解这一点!
编辑:
的具体问题是,是否委托的事件处理在其特定领域的事件会/也可以触发对文档的其余部分的活动形式?如果是这样,如何处理? 如果这不是事件授权的预期行为,那么可能是什么原因导致它?
TL;博士。你应该更精确和简洁 - 你的问题是什么? – Reinmar
刚刚添加了一个特定的问题。 :) – user
嗯...现在我不明白你的问题,但也许别人做:) – Reinmar