2016-07-08 5 views
1

Я пробовал много тигров, чтобы перейти к следующему элементу div. Я использую Mousetrap для прослушивания ключей и проверки, есть ли выбранный элемент, тогда я пытаюсь найти следующий div, но похоже, что он не может найти какие-нибудь идеи?Перейти к следующему div не работает

HTML (Есть много этого сНу элемента):

<div class="item"> 
<a href="#"> 
    <div class="item-flip"> 
     <div class="item-inner"> 
      <img src="#"> 
     </div> 
      <div class="item-details"> 
       <div class="item-details-inner"> 
        <div class="down-details"> 
        <div class="rating" data-content="9.5"> 
        <i class="icon icon-star"></i>9.5 
        </div> 
        <span class="year">2011</span> 
        <span>Go</span> 
       </div> 
      </div> 
     </div> 
    </div> 
</a> 
</div> 

Javascript

Mousetrap.bind("right", function() { 
    if($('.item-flip selected').length){ 
     var current = $('.item-flip selected'); 
     $('.selected').removeClass('selected'); 
     var el = current.next(); 
     el.addClass('selected'); 
    } 
    else{ 
     $('.item-flip').first().addClass('selected') 
    } 
}); 
+1

'$ ('пункт флип выбран')' неправильно и возвращает пустой массив. --- Вместо этого используйте '$ ('. Item-flip .selected')', обратите внимание на точку до «selected», чтобы указать класс css. – evolutionxbox

+0

Я попробовал это и перед тем же ... return empty – OnlyForSimple

+0

Конечно, они будут пусты. Как и в вашем HTML, нет элемента с классами '.item-flip' и' .selected'. В блоке 'else' вы выбираете элемент, который не существует (как' $ ('. Item-flip selected'). Length' будет 0). – evolutionxbox

ответ

1

Я попытался, как выяснить, решение, в следующем фрагменте кода мой код.

Точки интереса являются:

  • Чтобы выбрать элемент с двумя классами вам нужно перейти от $('.item-flip selected') к $('.item-flip.selected')

  • Чтобы получить следующий элемент, который нужно найти отца clossest Див и затем найдите элемент-flip div. Так что с var el = current.next(); вам нужно изменить на: var el = current.closest('.item').next().find('.item-flip');

$(function() { 
 
    Mousetrap.bind("right", function(e) { 
 
    if($('.item-flip.selected').length){ 
 
     var current = $('.item-flip.selected'); 
 
     $('.selected').removeClass('selected'); 
 
     var el = current.closest('.item').next().find('.item-flip'); 
 
     el.addClass('selected'); 
 
    } 
 
    else{ 
 
     $('.item-flip').first().addClass('selected') 
 
    } 
 
    }); 
 
});
.selected { 
 
    background-color: red; 
 
}
<script src="https://code.jquery.com/jquery-1.12.1.min.js"></script> 
 
<script src="https://rawgit.com/ccampbell/mousetrap/master/mousetrap.js"></script> 
 

 
<div class="item"> 
 
    <a href="#"> 
 
     <div class="item-flip"> 
 
      <div class="item-inner"> 
 
       <img src="#"> 
 
      </div> 
 
      <div class="item-details"> 
 
       <div class="item-details-inner"> 
 
        <div class="down-details"> 
 
         <div class="rating" data-content="9.5"> 
 
          <i class="icon icon-star"></i>9.5 
 
         </div> 
 
         <span class="year">2011</span> 
 
         <span>Go</span> 
 
        </div> 
 
       </div> 
 
      </div> 
 
     </div> 
 
    </a> 
 
</div> 
 
<div class="item"> 
 
    <a href="#"> 
 
     <div class="item-flip"> 
 
      <div class="item-inner"> 
 
       <img src="#"> 
 
      </div> 
 
      <div class="item-details"> 
 
       <div class="item-details-inner"> 
 
        <div class="down-details"> 
 
         <div class="rating" data-content="9.5"> 
 
          <i class="icon icon-star"></i>9.5 
 
         </div> 
 
         <span class="year">2011</span> 
 
         <span>Go</span> 
 
        </div> 
 
       </div> 
 
      </div> 
 
     </div> 
 
    </a> 
 
</div> 
 
<div class="item"> 
 
    <a href="#"> 
 
     <div class="item-flip"> 
 
      <div class="item-inner"> 
 
       <img src="#"> 
 
      </div> 
 
      <div class="item-details"> 
 
       <div class="item-details-inner"> 
 
        <div class="down-details"> 
 
         <div class="rating" data-content="9.5"> 
 
          <i class="icon icon-star"></i>9.5 
 
         </div> 
 
         <span class="year">2011</span> 
 
         <span>Go</span> 
 
        </div> 
 
       </div> 
 
      </div> 
 
     </div> 
 
    </a> 
 
</div>

+1

Не могли бы вы объяснить, почему OP был неправильным? --- Давать им ответ без причины означает, что ОП будет делать одни и те же ошибки. – evolutionxbox

+0

Удивительный ... !!! Спасибо: D – OnlyForSimple

+0

Я видел проблему, поскольку я сказал, что не могу найти следующий элемент, поэтому должен использовать лучший метод поиска следующего. – OnlyForSimple

Смежные вопросы