jQuery或JavaScript在其他元素附近获取元素

时间:2013-12-12 02:48:01

标签: javascript jquery html css position

如何(使用jQuery或JavaScript ......)

<div style="background-color:red;height:10px;width:10px;float:left;"></div>
<div style="background-color:red;height:10px;width:10px;float:left;margin-left:25px;"></div>
<br>
<div style="background-color:red;height:10px;width:10px;margin-left:15px;" id="2">

我是否得到最接近id=2的元素?我需要这种类型的选择器,任何帮助将不胜感激。 :)

请注意,我不介意为这些元素设置position:relativeabsoluteleft:(number)px

我需要一个可以在动态环境中工作的代码;你知道,当块不断创建并继续向前滚动并改变左侧位置时。我可以使用.position()吗?不知?

谢谢。 :)

2 个答案:

答案 0 :(得分:3)

这是一个有趣的思想实验......

要解决此问题,您可能需要计算每个元素的offset,并将这些坐标(topleft)与其他元素进行比较。

假设您要查找距compareEl最近的元素,并且您有compareElTopcompareElTop,请循环显示屏幕上的所有元素(compareEl除外),并执行此操作像这样的东西:

var topDiff = Math.abs(compareElTop-elements[x].offset().top);
    leftDiff = Math.abs(compareElLeft-elements[x].offet.left);

与最低topDiff+leftDiff配对最近。

Here is a nice jsFiddle for you to play around with! All kinds of awesome.

答案 1 :(得分:1)

例如,如果您想获得与#2最接近的DOM元素:

    <span>before</span>
    <div style="background-color:red;height:10px;width:10px;margin-left:15px;" id="2">  </div>
    <span>after</span>

使用Javascript:

$(function(){
    var prevIt = $('#2').prev();
    var nextIt = $('#2').next();
});

这是demo