2016-07-08 2 views
1

나는 다음 수신기 요소로 이동하기 위해 많은 thigs를 시도했다. 키 수신기를 위해 쥐덫을 사용하고 있고 선택된 항목이 있는지 확인한 후 다음 div를 찾으려고 노력하고 있지만 보이지 않는다. 어떤 아이디어라도 찾았습니까?작동하지 않는 다음 div로 이동

HTML (이 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> 

자바 스크립트

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')'를 사용하여 css 클래스를 나타 내기 위해 "selected"앞에 점을 주목하십시오. – evolutionxbox

+0

나는 그것을 시험해 본다. 그 전에 ... 공허로 돌아 간다. – OnlyForSimple

+0

물론 그들은 비어있을 것이다. HTML에서와 마찬가지로'.item-flip'과'.selected' 클래스를 가진 요소가 없습니다. 'else' 블록에서 존재하지 않는 요소를 선택합니다 ('$ ('. item-flip selected'). 길이는 0이됩니다). – evolutionxbox

답변

1

나는 다음 내 코드에서 코드를 해결책을 파악하는 방법을 시도했다. 관심의

점은 다음과 같습니다

  • 하면 다음 요소를 얻으려면 $('.item-flip.selected')

  • $('.item-flip selected')에서 변경해야하는 두 개의 클래스를 가진 요소를 선택하려면이 clossest div의 아버지를 찾기 위해 필요 그런 다음 item-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가 왜 잘못되었는지에 대한 설명을 추가 할 수 있습니까? --- 이유없이 대답을하면 OP가 계속해서 같은 실수를 저지를 것입니다. – evolutionxbox

+0

놀라운 ... !!! 감사합니다 : D – OnlyForSimple

+0

다음 요소를 찾을 수 없다고 말하면서 문제를 보았으므로 더 나은 다음 찾기 방법을 사용해야합니다. – OnlyForSimple