2011-04-26 82 views
-1

說,你有這樣的:如何判斷一個Div是否在另一個div的右側或左側? jQuery的的JavaScript

<div id="1"></div><div id="2"></div><div id="3"></div> 

你可以使用JavaScript/jQuery來發現ID = 「2」 是的id = 「1」 的權利?

+1

你的意思是正確的作爲顯示在右邊,或向右作爲下一個元素? – 2011-04-26 16:33:11

+0

有什麼區別/ – TaylorMac 2011-04-26 16:33:57

+0

顯然他的意思是「顯示」。 @TaylorMac爲什麼你問這個,只是爲了它的樂趣或爲了一個真正的目的? – 2011-04-26 16:35:16

回答

3

,如果你正在尋找#2之前出現的股利,做這樣的事情:

$("#2").prev("div") 
+0

如果他們是在父母的div中呢?這仍然有效嗎? – TaylorMac 2011-04-26 16:37:25

+0

是的,看到這個jsfiddle http://jsfiddle.net/27zwz/。 prev()和next()遍歷兄弟元素。 – 2011-04-26 16:41:22

+0

太棒了!謝謝! – TaylorMac 2011-04-26 16:42:47

0

我不是專家,但不,我不認爲你可以。

首先你是在談論代碼或者它是如何在屏幕上出現的?列出的3個div實際上每個都顯示在他們自己的路線上。您需要使用跨度將它們全部保持在同一行上。

+0

您是對的。我的意思是它顯示在其他元素之前 – TaylorMac 2011-04-26 16:35:41

+0

不,您不需要跨度來保持它們在同一行上。例如,您可以將樣式'float:left;'應用於div以使它們排列在彼此的旁邊。 – Guffa 2011-04-26 16:45:52

0

你可以讓自己的立場,如果DIV#I1的立場是比格#的一個較小i2的位置(他們的x定位,如果你願意的話)。 http://api.jquery.com/position/

#Requires jQuery 
var d1x = $('div#i1').position().left, 
    d2x = $('div#i2').position().left; 

$('span').html((d1x < d2x) ? "yes" : "no"); 

我不認爲ID可以只是數字。它可能有用,但這不是一個好習慣。

jsFiddle:http://jsfiddle.net/PKpdp/

0

是的。你如何檢查這取決於你的意思是「正確的」。

可以使用offset方法來獲得兩個元素的位置:

o1 = $('#1').offset(); 
o2 = $('#2').offset(); 

現在你可以比較o1o2對象的lefttop性能。

如果通過「向右」意味着他們是彼此的旁邊,而第二個div是在右邊,你有兩個屬性比較:

if (o1.top == o2.top && o1.left < o2.left) ... 

如果只意味着第二個div應該更多地去比第一的權利,那麼你只需要比較left屬性:

if (o1.left < o2.left) ... 

注意的id不應以數字開頭。使用例如id="x1"id="x2"將是有效的。

0

我會做這樣的事情:

function is_div2_after_div1() { 
    is_after = null; 
    $("#parent > div").each(function(i, el) { 
    if (is_after !== null) return; 
    if (el.id && el.id == "div1") is_after = true; 
    if (el.id && el.id == "div2") is_after = false; 
    } 
    return is_after; 
} 
相關問題