访问兄弟姐妹的更好方法

时间:2014-02-26 18:35:51

标签: jquery

我有3个兄弟姐妹:

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

我需要找到我正在与之交互的当前div的兄弟姐妹(特别是他们的'#id')。现在我有几个if else语句,但我认为有一种更有效的方法可以做到这一点。

我最初有:

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

但无论siblingOne如何,它始终会为siblingTwosiblings([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,如果这有意义的话。

感谢。有什么建议吗?

3 个答案:

答案 0 :(得分:0)

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

$("#container").children().each(function(){
    $(this).dosomething();
}

答案 1 :(得分:0)

我想你可以这样做:

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

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

答案 2 :(得分:0)

var ids = $(div).siblings().map(function(i,o){ return $(o).attr('id'); })

这将返回一组id。 然后,您可以使用ids[0]访问第一个ID,使用ids[1]

访问第二个ID