2
在JavaScript + DOM中,如果鼠标事件发生在容器上但位于所有封闭元素下方,如何有效地找到直接位于光标上方的封闭元素(相同x
,不同y
) ?通过部分坐标查找DOM元素
显然getElementFromPoint
不帮我在这里(即使可用),因为我不会逐个像素。如果有很多元素,找到容器中所有元素的位置也可能相当缓慢。
在JavaScript + DOM中,如果鼠标事件发生在容器上但位于所有封闭元素下方,如何有效地找到直接位于光标上方的封闭元素(相同x
,不同y
) ?通过部分坐标查找DOM元素
显然getElementFromPoint
不帮我在这里(即使可用),因为我不会逐个像素。如果有很多元素,找到容器中所有元素的位置也可能相当缓慢。
如果使用这样的嵌套HTML标记,则可以绕过使用X,Y坐标并导航DOM的需要。
<ul id="theparent" class="aparent">
<li id="thechild" class="achild">Something</li>
<li id="anotherchild" class="achild">Something</li>
</ul>
<ul id="anotherparent" class="aparent>
<div id="yetanotherchild" class="achild">Something else</li>
</ul>
您可以使用jQuery绑定到每个achild
div的onclick事件,然后找到其直接父:
$(".achild").bind("click", function() {
$(this).parent().trigger("childclicked");
});
然后你就可以做出点什么父:
$(".aparent").bind("childclicked", function() {
console.log("a child of mine was clicked");
});
好吧,但我需要处理click * outside *子元素。想象一下,在你的例子中,父母的身高高于孩子的身高,并且同一'行'上可能有多个孩子。 – 2011-03-05 09:22:19
您是否真的需要点击父元素的X,Y坐标,或者只是想要触发一个事件?你为什么不绑定到父级的onclick处理程序?我认为你需要发布一些HTML和JS来澄清。 – stef 2011-03-05 10:14:07