2011-02-09 3 views
1

나는 cluetip jQuery 플러그인을 사용하고 있습니다.jQuery : 트리거 도움말

내 자신의 닫기 버튼을 추가하려고합니다. 내가 전화를 노력하고있어 JQuery와는 다음과 같습니다

$(document).bind('hideCluetip', function(e) { 
    cluetipClose(); 
}); 

코드와 JQuery와 삽입물을 사용하고, 지금까지 내가 알고 있어요 정도로 그 기능을 작동 버튼을 통해 cluetipClose()에 많은 참조가 있습니다 잘 작동합니다.

<a href="#" class="close-cluetip">Close</a> 

을하지만 아무것도되지 않습니다

나는

$('a.close-cluetip').trigger('hideCluetip'); 

사용하여 내 링크를 만들었으므로 트리거하기 위해 노력하고있어.

내가 잘못 말하고 있습니까?

답변

1

여기에서 문제는 cluetip 플러그인에서 함수 clueTipClose()이 클로저 안에 있기 때문에 클로저 내부 (즉, 플러그인 코드 내부)에 있지 않으면 액세스 할 수 없다는 것입니다. 이제는이 플러그인이 확장 성있는 것으로 보이지 않는다는 것을 인정해야합니다. 그들은 그것을 사용하는 각 요소에 대해 설정 한 "clueTip"개체를 통해이 기능에 액세스 한 경우,이 같은 폐쇄의 마지막에 또 다른 jQuery를 방법을 추가 할 수있을 것 :

$.fn.cluetipClose = function() { 
    return this.each(function() { 
     var thisCluetip = findCluetipObj(this); 

     if (thisCluetip) 
      thisCluetip.cluetipClose(); 
    }); 
}; 

그러나 이 일을 쉽게 할 수 없다는 불행한 행운이 있습니다. 이 사람이 클로저 안에 비 OO 코드로 jQuery 플러그인을 작성한 것 같습니다. 불쌍한 너.

더하기 측면에서이 플러그인은 cluetipClose() 함수를 인스턴스화 한 직후이 코드를 이미 실행하고있는 것 같습니다. 코드에서이 작업을 시도해 보셨습니까?

$('a.close-cluetip').trigger('hideCluetip'); 

hideCluetip 바인드를하지 않으셨습니까? 아마 그게 효과가 있다고 생각합니다.

+0

나는 바인딩을 작성하지 않았습니다. 그것은 플러그인 js에 상주합니다. 그냥 링크를 클릭 할 때 전화하려고합니다. – iamjonesy

+0

@iamjonesy : 당연히 당신은하지 않았습니다 :-). 내가 말했듯이 어쨌든 이벤트를 시작하려고 했습니까? 앞에서 말했듯이, 이벤트는 플러그인이 인스턴스화 될 때 문서 레벨에 이미 첨부되어 있으므로 트리거하면 플러그인이 닫혀 야합니다. 그래도 문제가 해결되지 않으면'$ (document) .trigger ('hideCluetip')' – treeface