2010-10-15 56 views
45

在jQuery中有選擇位於特定位置的元素的方法嗎?使用jQuery在特定位置查找元素?

例如,我可以選擇位於左側的元素:100和頂部:300的絕對位置?

如果我可以選擇位於一系列位置的元素,例如,選擇位於左側的元素:100 - 150 px top 200 - 280px,那將會很好。

+0

你爲什麼需要這個?如果你傳遞了位置爲:relative的父元素,但仍然可能是爲什麼?它將deffinetly緩慢,我真的不認爲你沒有這個 – Claudiu 2010-10-15 13:47:15

+0

其他解決方案這基本上是一樣的這個問題:http://stackoverflow.com/questions/1280660/given-an-xy-coordinate -i-need-to-find-all-html-elements-under-it – 2013-06-05 05:20:30

+0

Anderson,那個人沒有指定jQuery。這一個:http://stackoverflow.com/questions/2664227/find-element-at-an-absolute-position?rq=1 – 2013-10-01 12:52:00

回答

76

您正在尋找.elementFromPoint() JavaScript/DOM方法。

var elem = document.elementFromPoint(100, 100) // x, y 

返回一個DOM node,這當然然後可以包裝成一個jQuery對象:

$(elem).remove(); // for instance 

我不知道這對跨瀏覽器的兼容性,我想有些人誰更好地編輯這篇文章或撰寫關於它的評論。

參考:.elementFromPoint()

實例鏈接:http://www.jsfiddle.net/YjC6y/22/

+4

哇!從來不知道。外觀極好!每天學些新東西。 – 2010-10-15 13:55:31

+0

謝謝,但這不適用於IE6 – 2010-10-15 14:11:09

+1

@Thomas:這很可能。在IE中用 – jAndy 2010-10-15 14:15:47

7

只要你知道確切的座標相對於文檔:

function getElsAt(top, left){ 
    return $("body") 
       .find("*") 
       .filter(function() { 
          return $(this).offset().top == top 
            && $(this).offset().left == left; 
       }); 
} 

對方回答停在第一個覆蓋。

+0

在'.find(「*」)中的選擇符中加':visible'可能對某些應用程序有幫助 – Mike 2014-10-09 17:23:29