是否有可能在jQuery中知道節點是否與另一個節點重疊?確定一個節點是否與另一個節點重疊
回答
那麼,你想檢測重疊?然後這樣的:
var overlaps = (function() {
function getPositions(elem) {
var pos, width, height;
pos = $(elem).position();
width = $(elem).width();
height = $(elem).height();
return [ [ pos.left, pos.left + width ], [ pos.top, pos.top + height ] ];
}
function comparePositions(p1, p2) {
var r1, r2;
r1 = p1[0] < p2[0] ? p1 : p2;
r2 = p1[0] < p2[0] ? p2 : p1;
return r1[1] > r2[0] || r1[0] === r2[0];
}
return function (a, b) {
var pos1 = getPositions(a),
pos2 = getPositions(b);
return comparePositions(pos1[0], pos2[0]) &&
comparePositions(pos1[1], pos2[1]);
};
})();
用法:
if (overlaps(node1, node2)) {
// ...
}
'offset()'更有效一些。 – 2011-12-19 22:27:02
@JohnFable它是? – 2011-12-19 22:27:54
非常感謝! – MyBoon 2011-12-19 22:38:50
使用.offset()
尋找它在屏幕上的位置:
隨着offset();
,你將能夠得到一個Y座標稱爲top
,這將是它的像素位置,從窗口的頂部。
var boxOne = $('#boxOne').offset():
var boxTwo = $('#boxTwo').offset():
if(boxOne.top>boxTwo.top) {
alert('boxOne is higher');
} else if (boxOne.top==boxTwo.top) {
alert('boxes are even');
} else {
alert('boxTwo is higher');
}
OP希望檢測[overlapping](http://data.imagup.com/11/1138998080.png),而不是文檔中哪個節點更高。 – 2011-12-19 22:29:50
對於在DOM中的位置,我不認爲index()
就足夠了,除非你比較兩個姐妹元素。更一般地,從兩個祖先名單,而相同
-
兩個節點上
- 使用
parents()
- 流行過的元素比較
index()
的最高不同的祖先
(或者,你也可以做index()
在$('*')
,但我想這將是可怕的低效率)
編輯:與澄清離子根據@邁克的答案,這現在正式成爲碰撞檢測問題。因此,我認爲像this是有序的,但請注意評論。您可以改爲使用jQuery offset()
function來獲取元素的位置。比較邏輯是健全的。
- 1. 如何檢查一個節點是否是另一個節點的子節點?
- 2. XSL:節點值與另一個節點
- 3. 如何知道一個節點是否與另一個節點相交?
- 4. 確定節點是否包含在XSLT中的另一個節點中
- 5. WebAudio:有沒有辦法確定節點是否連接到另一個節點?
- 6. 獲得另一個節點的子節點,定節點名稱
- 7. XSLT測試XML節點是否包含另一個XML節點?
- 8. 的XPath的節點中的一個節點是另一個節點的兄弟
- 9. SpriteKit:另一個節點上的節點
- 10. 確定一個節點是否存在於一個boost binomial_heap
- 11. 檢查一個節點是否是React/React Native中另一個節點的父節點
- 12. XSLT:重複一個節點與每個順序節點
- 13. 現有節點添加到另一個節點的子節點
- 14. XPath:根據另一個節點選擇一個節點?
- 15. 從另一個節點訪問一個節點服務器
- 16. 相關一個節點到另一個節點
- 17. XPath:根據另一個節點值選擇一個節點
- 18. Re將pod從一個節點調度到另一個節點
- 19. 查找從一個節點到另一個節點的層數
- 20. 將一個節點拖放到另一個節點中
- 21. 確定節點是否是CDATA節
- 22. 另一個節點集
- 23. 什麼是一個節點的密碼查詢,但不是另一個節點?
- 24. HtmlAgilityPack - 更換節點與另一個節點
- 25. xslt測試/匹配當前節點與另一個節點
- 26. 如何檢查一個DOM節點是否是`html`節點
- 27. 確定可摺疊樹中的某個節點是否隱藏
- 28. XSL:如何測試當前節點是否是另一個節點的後代
- 29. 檢查一個節點是否是jstree中的一個葉節點
- 30. Neo4j匹配與一個或另一個節點有關係的節點
定義'above'和'below'與問候到DOM? – 2011-12-19 21:58:51
在David Thomas的問題之上,你如何選擇節點? – Jasper 2011-12-19 22:00:15
是的,絕對定義'above'和'below',因爲你有三個不同的答案,基於'above''和''below'''三個不同的含義...... – redShadow 2011-12-19 22:06:29