2012-11-23 1 views
3

팁 열기/닫기 후에 콜백 함수를 설정하려고합니다.jQuery Tipsy의 콜백 숨기기/표시

function addText() 
{ 
    $('#text').html('Tipsy is now open !'); 
} 

$('.tipsy').tipsy(addText); 

팁티가 열리면 addText()를 실행하고 싶지만 그렇지 않습니다.

유용한 코드를 수정하지 않고도 쉽게 할 수 있습니까? http://jsfiddle.net/Tqcgr/1/

답변

1

이가 쉬웠다 :이 기능은 우리가 원하는 우리가

$(function() { 
    function addText(el) 
    { 
    $('#text').html('Tipsy is now open !'); 
    return $(el).attr('original-title'); 
    } 

    $('.tipsy').tipsy({ 
    gravity: 'w', 
    title: function() { 
     return addText(this); 
    } 
    }); 
}); 

예는 여기에서 볼 수있는이 사용자 정의 콜백 함수를 사용하지 않은 것처럼 단순히 원래의 제목을 반환 무엇을 할 것인가 onShow 및 onHide 콜백을 추가하십시오. 당신이 쇼를 수정하고 방법을 숨길 필요가 http://jsfiddle.net/Tqcgr/2/

을하지만이를 확인하십시오.

//show 
var callback = this.options.onShow, 
    element = this.$element[0], 
    runCallback = function() { 
     if(callback){ 
      callback.call(element); 
     } 
    }; 

//invoke 
if (this.options.fade) { 
    $tip.stop().css({opacity: 0, display: 'block', visibility: 'visible'}).animate({opacity: this.options.opacity}, runCallback); 
} else { 
    $tip.css({visibility: 'visible', opacity: this.options.opacity}); 
    runCallback(); 
} 

//hide 
var callback = this.options.onHide, 
    element = this.$element[0], 
    runCallback = function() { 
     if(callback){ 
      callback.call(element); 
     }       
    }; 
    //invoke 
if (this.options.fade) { 
    this.tip().stop().fadeOut(function() { $(this).remove(); runCallback()}); 
} else { 
    this.tip().remove(); 
    runCallback(); 
} 
+0

나는 tipy의 파일을 수정하고 싶지 않았지만,이 솔루션은 그렇게하는 것이 더 좋은 방법 인 것 같습니다. 고마워요. 어쩌면이 프로젝트 페이지에 끌어 오기 요청으로 넣을 수 있습니다! :) –

1

는 자,이 문서를 살펴 보자 :

여기 내 jsfiddle입니다 http://onehackoranother.com/projects/jquery/tipsy/

기운이 콜백을 지원하지 않지만, 매개 변수에 대한 콜백 기능 지원 : 예를 들어, 제목을. 그래서 우리는 함수 ass 파라미터를 전달할 수 있습니다. http://jsfiddle.net/Rf8qY/

+0

답장을 보내 주셔서 감사합니다. 이런 식으로, 팁키가로드되고 열리지 않을 때 attText가 실행됩니다. 타임 아웃으로 처리 할 수는 있지만 Yury Tarabanko의 해결책은 나에게 더 좋아 보인다. –

+0

그래서'addText()'가 익명 함수로 래핑됩니다. 하지만 행운을 빌어 요 어쨌든 –