2013-03-20 5 views
0

Что я использую в качестве альтернативы методу .siblings() в JQuery, чтобы пройти через дивы определенного класса, но в отдельных контейнерах Див За то, как это работает:Альтернатива .siblings()

HTML:

<div id="container1"> 
    <div id="1"></div> 
</div> 

<div id="container2"> 
    <div id="2"></div> 
</div> 

JS:

$('#1').addClass('selected'); 

$('.selected').on('click',function() { 
    alert('hi'); 
}); 

$('#2').addClass('selectable'); 

$('.selectable').on('click',function() { 
    $(this).addClass('selected') 
      .removeClass('selectable') 
      .siblings('.selected') 
      .off('click'); 
}); 
+0

Любой хочет написать '.cousins ​​()' плагин? (т. е. делится с бабушкой и дедушкой) – Jamiec

+0

Как насчет '.friends()'? –

+2

@ Beetroot-Beetroot jQey Tribbiani? – StuperUser

ответ

1

Может быть, это может помочь:

$('.selectable').on('click',function() { 
    $(this).addClass('selected') 
      .removeClass('selectable') 
      .parent() 
      .siblings() 
      .children() 
      .off('click'); 
}); 
+0

+1 Это работает! http://jsfiddle.net/93Cvx/2/ Но я решил открыть больше решений, прежде чем выбрать. – Ronophobia

+0

О, ладно, я выберу это. Спасибо! – Ronophobia

1

Я бы кодировать этот другой путь:

EDIT:

$('#1').addClass('selected'); 
$('#2').addClass('selectable'); 

var $outerContainer = $('#container1').parent(); 
$outerContainer.on('click','.selected,.selectable', function(event) { 
    if ($(event.target).is(".selected")) { 
     alert('hi'); 
    } else {  // .selectable 
     $('.selected', $outerContainer) 
      .removeClass('selected') 
      .addClass('selectable'); 
     $(event.target) 
      .addClass('selected') 
      .removeClass('selectable'); 
    } 
}); 

Вот link to jsfiddle

+0

А это не делает предупреждение .selectable element при нажатии. http://jsfiddle.net/93Cvx/3/ – Ronophobia

+0

@ Ронофобия, ах, да, я пренебрегал тем фактом, что распространенное событие наступит последним. См. Мой отредактированный пост. – marty

+0

Wow thanks, это интересное решение! +1 – Ronophobia