2013-10-17 3 views
0
내가 플러그인 등처럼 내 JQuery와 UI 탭에를 keyDown 눌러 바인딩 JQuery와 단축키를 사용하고

:UI 상태 초점 클래스, 프로그램

$(document).bind('keydown', '2', function (evt){ 
    $("#TabsID").tabs("option", "active", 1); 
    return false; 
});` 

문제 내가 다른 탭을 선택하려면 탭을 클릭 한 다음를 keyDown를 사용하는 경우 것으로, 이전 탭은 여전히 ​​같은 ui-state-focus에 의해 스타일되고있다 :

<li class="ui-state-default ui-corner-top ui-state-focus" role="tab" 
    tabindex="-1" aria-controls="foo" aria-labelledby="ui-id-5" 
    aria-selected="false"> 
    <a href="#foo" class="ui-tabs-anchor" role="presentation" tabindex="-1" 
     id="ui-id-5"> 
     Foo text 
    </a> 
</li> 

는 내가 다른 곳을 클릭 할 때까지 이런 식으로 유지됩니다. jQuery UI 1.10.3, jQuery 2.0.1 및 jQuery Hotkeys 0.8을 사용하고 있습니다. 지금 내를 keyDown 모두의 내부를 넣어 위해 내가 그것을 해결하기 위해 수행 한 어떤

$("#foo").find("li.ui-state-focus").removeClass('ui-state-focus'); 

을 결합하지만 더 나은 솔루션이 있는지 궁금하네요.

답변

0

몇 가지 테스트 후, 나는 클래스를 제거하면 갈 수있는 가장 좋은 방법이라고 생각이 간단한 작업에 대한 더 많은 코드를 작성하지 않아도,이 완벽하게 작동 안 :

$ (문서) .bind를 (' 를 keyDown ','2 ', 기능 (EVT) {

$("#tabs").find("li.ui-state-active").removeClass('ui-state-active'); 
    $("#tabs").tabs("option", "active", 2); 
    return false; 
}); 
+0

감사 매트 - 난 당신의 이전 제안을하려고했지만, 난이 내장 된 옵션을 가져올 수 없습니다'UI 탭에서 이벤트를 ' 내 기록을 알아보고 ed 이벤트 (사용자 지정 이벤트를 처리하지 않거나 잘못된 작업을하고있는 것 같습니다) 그래서 여기에서 제안한 것처럼 그냥 남겨 두었습니다. – John