2010-03-22 4 views
2

jQuery UI 탭 1.7.2를 jQuery 1.4.2와 함께 사용하면 탭을 마우스 오버 할 때 탭 전환 전에 지연이 생길 수 있습니다 ? 나는이 작업을 수행 할 hoverIntent 플러그인을 사용하여에 찾아 봤는데,하지만이에 딱 맞는 방법을 알아낼 수 없습니다jQuery UI 탭 마우스 오버시 탭을 변경하기 전에 강제 지연

는 는 는

이 지금 내 코드의 모양처럼 :. 나는 시도했다

var tabs = $('.tabs').tabs({ 
event: 'mouseover' 
}); 

쇼 이벤트에 콜백 장난,하지만 난 잘못 또는 콜백이 발생하는 경우에 명확하지하고 있어요 생각 :

$(".tabs").tabs({ 
show: function(event, ui) 
{ 
    setTimeout("FUNCTION_TO_CHANGE_TAB?", 200); 
} 
}); 

어떤 도움을 크게 감상 할 수있다.

답변

0

자신 만의 이벤트를 만들고 마우스 오버를 무시하고 새 이벤트를 트리거 할 수 있습니다. 난 당신이 1.4.2에있어 때문에 사용자 정의 이벤트를 사용할 수있는 블로그 post about it here

2

을 발견

.delegate()이 작업을 수행합니다 :

$("#tabs").tabs({ 
    event: 'mousedelay' 
}).delegate('ul.ui-tabs-nav li a', 'mouseover', function() { 
    clearTimeout($(this).closest('.ui-tabs').data('timeout')); 
    $(this).closest('.ui-tabs').data('timeout', setTimeout($.proxy(function() { 
    $(this).trigger('mousedelay'); 
    }, this), 500)); 
});​​​​​​​​​​​​​​​ 

You can try a demo here

이것은을 설정하여 작동 event option을 사용하여 맞춤 이벤트 인 수신 대기 입력 mousedelay 그런 다음 .delegate()에서 앵커에 대해 mouseover 이벤트를 듣고, 시간 제한을 지우고 (빠르게 탭을 두 번 넘기고) 다른 것을 설정합니다. 타임 아웃이 끝나면 해당 앵커 (탭)에서 mousedelay 이벤트가 트리거됩니다.

$.proxy() 조각은 우리가 마우스를 올리면 오버 앵커에 this 참조를 가지고 가까운 방법입니다하지 window (글로벌 맥락에서 setTimeout() 이후 실행)이 실행될 때.