2012-03-15 46 views
2

我有一個元素列表(帶有「newsitem」類),可在整個頁面中使用。我想要最高的元素,也就是該類中具有最低「最高」值的元素。如何有效地獲取jQuery,現在我正在迭代newsitem類,存儲最高值並將其與最低值進行比較。這幾乎是唯一的方法來做到這一點,或者有一個實際的方法嗎?在jQuery(或Javascript)中,如何獲得「最頂層」元素?

謝謝!

PS:這種方法是最接近我在做什麼現在:How to get height of the highest children element in javascript/jQuery?

PPS我有50%的回答率,只是因爲我的問題2至今沒有相關的答案。

+0

我不知道任何快捷方式這一塊,基本上你需要做一個jquery選擇器並使用'each'方法和'.css('top')'來比較值。值得注意的是,即使有這個快捷方式,它可能仍然會循環,就像你在內部一樣,因此效率可能不會更高(儘管它看起來更好) – joshuahealy 2012-03-15 03:58:29

+0

你可以搜索一個jQuery插件,雖然適合你的需求,但你永遠不知道這是否已經被其他人解決:) – joshuahealy 2012-03-15 03:59:57

回答

2

我認爲這應該工作(但我沒有測試它尚未)

function get_topmost_element(selector) { 
    var top = 0, 
     el; 
    $(selector).each(function(){ 
     var offset = $(this).offset(); 
     if (offset.top > top) { 
      highest = offset.top; 
      el = $(this); 
     } 
    }); 

    return el; 
} 

使用

get_topmost_element('.newsitem'); 
+0

我想我會得到你要去的地方,但是你認爲'this'變量會在函數中傳遞給你的'.each()'嗎? 'this'具有功能級範圍。我想你想要的東西像'.each(function(index,Element){...}); '並在'Element'而不是$(this)上操作。 'this'將會是你所在的函數。參考:http://api.jquery.com/each/ – dwerner 2012-03-15 04:44:39

+0

@DanielNWerner我想你誤解了,你提供的鏈接'this.style.color =「blue」; '演示在這裏使用相同的風格。 'this'總是指當前元素(你應該先看看那個頁面上的例子) – Rezigned 2012-03-15 05:02:30

+0

有趣的是,jQuery將執行範圍設置爲DOM元素的執行範圍,但爲什麼還要用$(this )如果你提供了一個參數列表,當你有元素時? – dwerner 2012-03-15 05:20:47

0

我想$(".newsitem:first")應該這樣做。

+1

$(「。newsitem:first」)不起作用,如果元素不按順序。如果第一個元素低於第二個元素,$(「:first」)返回「first」元素。 – StackOverflowed 2012-03-16 02:48:00

相關問題