2014-12-15 4 views
0

Я хочу выбрать родительский сиблинг. Однако мой Jquery не работает должным образом, хотя он не содержит никаких ошибок.Jquery select parent parent sibling

На дисплее класса BLC4 отображается модальный (в классе boxmo).

HTML:

<div id="bodypro"> 
<div class="product pro"> 

    <img class="product-img pro" src="imagessc/fxynxo1413781254438.jpg"> 

    <div class="product-actions pro"> 
    <div class="nav titlen pro" style="margin-top: 0%;">RAJFOO Gaming Mouse Button</div> 
    <div class="nav pro boxp" style="margin-left: 0px;"> 
     <ul> 
     <li class="blc4 data-toggle= active" data-original-title="Product Page" title="" data-placement="left" tooltip"=""> 
     </ul> 
    </div> 
    </div> 
</div> 

     <div class="boxmo"> 
     <div style="display: none;" aria-hidden="true" aria-labelledby="myModalLabel" role="dialog" tabindex="-1" class="modal productmodal"> 
      <div class="modal-dialog"> 
      <div class="modal-content"> 
      <div class="modal-header"> 
      <button aria-hidden="true" data-dismiss="modal" class="close" type="button"><i class="text-danger fa icon-remove"></i></button> 
      <h4 id="myModalLabel" class="modal-title"><i class="text-muted fa fa-shopping-cart"></i>RAJFOO Custom</h4> 
      </div> 
      <div class="modal-body"> 
       <div class="modal-footer"> 
       <div class="text-left pull-left col-md-6">      
       </div> 
       </div> 
      </div> 
     </div> 
</div> 

Jquery:

$j('.blc4').on('click', function(event) { 
    $j(this).parent().parent().siblings('.boxmo').find('.productmodal').modal('show'); 
)} 

Не работает. Я хочу, чтобы выбрать на класс клик blc4 родителя sibbling с классом mobox

+0

Является ли '$ j' вашим псевдонимом для jQuery? Каков контекст для этого кода? '$ j (this)' будет зависеть от области, в которой вы ее выполняете. Как мы должны знать, что не так с вашим кодом, если мы не знаем контекста? –

+3

_ «мой Jquery не работает должным образом, хотя он не содержит никаких ошибок». _ - Очевидно, что существует ошибка _is_, иначе это сработает. – nnnnnn

+0

Отличный комментарий, спасибо за вклад – user3710844

ответ

1

Вы один выравниваться, вам нужен другой parent вызов для того, чтобы работать:

$j(this).parent().parent().parent().siblings('.boxmo').find('.productmodal').modal('show'); 

легче найти родитель, используя селектор, а затем найти правильный ребенок, и это меньше зависит от точного расположения:

$j(this).closest('#bodypro').find('.boxmo .productmodal').modal('show'); 
+0

Спасибо, первый работает! Второй нет. То, что я не получаю, следующее: почему бы не использовать родителей вместо 3x parent()? – user3710844

+1

Вы нашли правильный div из массивного html. + 1 –

+0

@ user3710844: Я неправильно подсчитал уровни, теперь второй должен работать. На этом уровне есть идентификатор, поэтому кажется бессмысленным искать его из щелкнутого элемента, когда он будет уникальным на странице. Я не знаю, почему работает первый, на самом деле должен быть еще один «родительский» звонок, чтобы добраться до нужного уровня. Возможно, код, который вы опубликовали, неверен? В конце есть три уровня закрывающих тегов. – Guffa

1

Вы должны делать так:

$j(this).parents('#bodypro').find('.productmodal.modal').modal('show'); 
+0

Не работает, к сожалению. Я так же думал об этом раньше. – user3710844