Javascript 如何使用jquery在当前元素之前/之后选择具有特定ID的元素?

Javascript 如何使用jquery在当前元素之前/之后选择具有特定ID的元素?,javascript,jquery,element,selector,Javascript,Jquery,Element,Selector,我有一个网站,其中包含多个div与相同的元素,没有组织 例如: <div> <div id='abc_152142'> </div> <div id='abc_2353253'> </div> <div id='abc_3421121'> </div> </div> <div> <div id='abc_44211241'> &l

我有一个网站,其中包含多个div与相同的元素,没有组织

例如:

<div>
   <div id='abc_152142'>
   </div>
   <div id='abc_2353253'>
   </div>
   <div id='abc_3421121'>
   </div>
</div>
<div>
   <div id='abc_44211241'>
   </div>
</div>
<div>
   <div id='abc_541221421'>
   </div>
</div>
<div>
   <div id='abc_654354'> // --> THIS ONE IS SELECTED
   </div>
   <div id='abc_754335'>
   </div>
   <div id='abc_845345'>
   </div>
</div>
这并没有给我带来任何结果

ID是随机的,它们唯一的共同点是ID的开头(在本例中,我使用了
td.


谢谢你的帮助

您只需根据jQuery集合中的元素索引选择元素即可:

var $e = $('div[id^="td_"]');
var i = $e.index(this);

var $before = $e.eq(i - 1);
var $after = $e.eq(i + 1);

如果此处的行为适用于以前的:

<div>
   <div id='abc_541221421'>
   </div>
</div>
<div>
   <div id='abc_654354'> // --> THIS ONE IS SELECTED
   </div>
   <div id='abc_754335'>
   </div>
   <div id='abc_845345'>
   </div>
</div>
下一步:

function getNext(){    
    var next = $(this).next("div[id^='abc_']");
    if (next.length > 0)
      return next;
    return $(this).parent().next().find("div[id^='abc_']:first")
}

小提琴。

提供上下文?某个管理员?你的问题不清楚。您的id是以
td_
为前缀还是以
abc_
为前缀,并以相同的id获取元素?html中只能有一个id,请改用类?问题是以相同的id及其有效代码@themosquitokillerHuh抱歉…'td_uu'。。。这里有唯一的ID-td_…是的,谢谢。。。解决方案可能是使用索引。。。但是,由于$e.index(this)@M.V,我总是得到-1。这意味着
$e
集合不包括
this
元素,请确保选择器正确,我添加了一把小提琴。谢谢!我明白了!现在它工作了。。。我所做的就是再次打电话给这个ID,它就工作了!伟大的非常感谢。这也可以起作用。。。但正如我所说,代码实际上是无组织的,我们不能确定这种结构是否总是有效的!但无论如何,谢谢你的建议!
function getPrevious(){    
    var previous = $(this).prev("div[id^='abc_']");
    if (previous.length > 0)
      return previous;
    return $(this).parent().prev().find("div[id^='abc_']:last")
}
function getNext(){    
    var next = $(this).next("div[id^='abc_']");
    if (next.length > 0)
      return next;
    return $(this).parent().next().find("div[id^='abc_']:first")
}