如何判断一个Div是在另一个Div的右侧还是左侧?Jquery Javascript
说你有这个:如何判断一个Div是在另一个Div的右侧还是左侧?Jquery Javascript,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,说你有这个: <div id="1"></div><div id="2"></div><div id="3"></div> 你能用Javascript/jQuery找到id=“2”在id=“1”的右边吗?我不是专家,但不,我认为你不能 首先,你是在谈论代码中的内容还是它是如何在屏幕上显示出来的?列出的3个div实际上都会出现在他们自己的台词中。您需要使用跨距使它们保持在同一条线上。如果要查找#2之前的div,请执行以下
<div id="1"></div><div id="2"></div><div id="3"></div>
你能用Javascript/jQuery找到id=“2”在id=“1”的右边吗?我不是专家,但不,我认为你不能
首先,你是在谈论代码中的内容还是它是如何在屏幕上显示出来的?列出的3个div实际上都会出现在他们自己的台词中。您需要使用跨距使它们保持在同一条线上。如果要查找#2之前的div,请执行以下操作:
$("#2").prev("div")
你可以得到他们的位置,如果div#i1的位置小于div#i2的位置(如果你愿意,他们的x位置)
#需要jQuery
变量d1x=$('div#i1')。位置()。左,
d2x=$('div#i2').position().左;
$('span').html((d1x
我不认为ID只能是数字。这可能有效,但不是一个好的做法
jsIDLE:是。如何检查取决于“向右”的确切含义 您可以使用
offset
方法获取两个元素的位置:
o1 = $('#1').offset();
o2 = $('#2').offset();
现在,您可以比较o1
和o2
对象的left
和top
属性
如果“向右”表示它们相邻,而第二个div位于右侧,则必须比较两个属性:
if (o1.top == o2.top && o1.left < o2.left) ...
if (o1.left < o2.left) ...
请注意,id
不应以数字开头。例如,使用id=“x1”
和id=“x2”
将是有效的。我会这样做:
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;
}
你的意思是向右显示,还是向右显示,就像在下一个元素中一样?显然,他的意思是“显示”@TaylorMac你为什么问这个问题,只是为了好玩还是为了真正的目的?一个问题-你问这个问题是为了网页设计,还是这个问题是DOM完成后你需要知道的(即,为了用户交互)?这些ID是无效的。它们必须以一个字母开头,我不认为很明显他指的是显示,因为div本身就是块元素,他没有向我们提供css来证明这些元素是浮动的或内联设置的。我认为更可能的是,他只是失去了先前的元素id。你是对的。我只是说它显示在其他元素之前不,你不需要跨距来保持它们在同一条线上。例如,您可以应用样式
float:left代码>到div,使它们并排排列。是的,请参阅此jsfiddle。prev()和next()遍历同级dom元素。如果这是您的问题的解决方案,则不要忘记标记为“答案”,这将只决定它们在dom中的顺序,这并不一定意味着它们按该顺序显示。@guffa,这是正确的,但我在注释中向op确认了他正在寻找的内容。否则,你的回答太棒了。@Guffa我认为他字面上是指彼此的左边或右边——从图形的意义上说。英雄联盟
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;
}