2014-02-26 73 views
0

更好的办法我有3个兄弟姐妹:访问的兄弟姐妹

---------------------- 
| div1 | div2 | div3 | 
---------------------- 

我需要找到当前的div我与交互的兄弟姐妹(特别是他们的“#ID”)。现在我有几个if else声明,但我认为有一个更有效的方法来做到这一点。

我本来有:

var siblingOne = $(div).siblings([0]).attr('id'); 
var siblingTwo = $(div).siblings([1]).attr('id'); 

但是它总是选择siblingOnesiblingTwo无论siblings([index])相同的兄弟姐妹。

所以我结束了使用这种方法 - 哪些工作,但是有点额外的工作。

function foo(div){ 
    if(div == "#div1"){ 
     var siblingOne = $(div).next().attr('id'); 
     var siblingTwo = $(div).next().next().attr('id'); 
    } 
    else if(div == "#div2"){ 
     var siblingOne = $(div).prev().attr('id'); 
     var siblingTwo = $(div).next().attr('id'); 
    } 
    else{ 
     var siblingOne = $(div).prev().attr('id'); 
     var siblingTwo = $(div).prev().prev().attr('id'); 
    } 
} 

后来我申请:('#'+siblingOne)('#'+siblingOne)因此,如果这是有道理的,我可以访问的ID。

谢谢。有什么建议么?

+0

'.siblings([0])',那是什么? –

+0

我一直认为兄弟姐妹被索引......也许这是我最初的问题。 – user3311351

+0

你最好解释一下你在找什么。无论如何,我真的不明白为什么你需要ID。并且使用兄弟姐妹索引:'.siblings()。eq(0)',它已经返回一个jq对象 –

回答

0

我想你可以做这样的事情:

var $siblings = $(currentDiv).siblings(); 

var sibling1Id = $siblings[0].id; 
var sibling2Id = $siblings[1].id; 
0

也许他们的父母打电话给他们?

$("#container").children().each(function(){ 
    $(this).dosomething(); 
} 
0
var ids = $(div).siblings().map(function(i,o){ return $(o).attr('id'); }) 

这将返回一组ID。 然后,您可以访问第一个编号ids[0]和第二个编号ids[1]