2010-08-10 9 views
1

특정 링크에서 facebox 플러그인을 사용합니다.facebox (jquery)를 비활성화하는 방법

일부 링크를 동적으로 비활성화하고 싶습니다. 그래서 그들을 클릭하면 facebox가 열리지 않습니다.

나는 여러 가지 방법으로 시도했지만 그 중 아무 것도 작동하지 않는 것으로 나타났습니다. Facebox는 링크를 클릭해도 작동합니다.

나는 (클릭 및 마우스 다운 이벤트를 방지하기 위해) 이것을 시도했지만 여전히 페이스 박스가 나타나지 않도록 설정하지 않았습니다.

$('#who_button').click(function(event) { event.preventDefault();}); 
$('#who_button').mousedown(function(event) { event.preventDefault();}); 

어떻게해야합니까?

편집 :

$('#who_button').click(function(event) { alert ('here');event.stopPropagation(); event.stopImmediatePropagation();}); 
    $('#who_button').mousedown(function(event) { event.stopPropagation(); event.stopImmediatePropagation();}); 

여전히 운 :

는 브래드와 PetersenDidIt 조언에 따라이 시도. 또한 facebox 프레임이 경고 대화 상자 아래에 표시됩니다. 이는 내 클릭/마우스 이벤트가 호출되기 전에 facebox가 시작된다는 것을 의미합니다.

다른 모든 이벤트보다 먼저 발생하는 이벤트를 첨부 할 수 있습니까?

아마도 facebox는 다른 이벤트 (클릭 또는 마우스 클릭 제외)를 사용합니다. 그것은 무엇 일 수 있는가?

답변

1

로 preventDefault 그냥 클릭의 정상적인 동작이 어떤 것을 방지하십시오.

것은 내가 그래서 그것의 이벤트를 결합하는 방법을 모르겠어요, facebox을 사용한 적이 있지만, 당신은 아마 어떤 것을 더 좋아합니다 :

event.stopImmediatePropagation() 

편집

는 facebox 사용하는 것 같은데 자체 맞춤 이벤트입니다. 당신은 소스 (아래)에서 이것을 볼 수 있습니다. 그래서 가장 좋은 방법은 해당 이벤트에서 요소를 바인딩을 해제하는 것입니다 : 이것은 단지 어떤 부모 요소에 버블 링 방지 할 수

$.fn.facebox = function(settings) { 
    if ($(this).length == 0) return 

    init(settings) 

    function clickHandler() { 
     $.facebox.loading(true) 

     // support for rel="facebox.inline_popup" syntax, to add a class 
     // also supports deprecated "facebox[.inline_popup]" syntax 
     var klass = this.rel.match(/facebox\[?\.(\w+)\]?/) 
     if (klass) klass = klass[1] 

     fillFaceboxFromHref(this.href, klass) 
     return false 
    } 

    return this.bind('click.facebox', clickHandler) 
    } 
+0

고마워! 위의 편집을 참조하십시오 – Nir

+0

위 참조 편집 ... – brad

+0

brad 감사합니다! $ ("ele"). unbind ("click.facebox"); 이 구문은 바운드 함수 이름을 지정해야하기 때문에 작동하지 않습니다. 그러나 : $ ("# who_button"). unbind(); 잘 작동하는 것 같습니다. – Nir

0

는 (링크 리디렉션 IE)를 event.stopPropagation()

+0

$("ele").unbind("click.facebox"); 

Facebox 공공 기능. 클릭이 위에 참조 된 요소에 직접 바인딩 되어도 계속 실행됩니다. Facebox가 어떻게 이벤트를 묶는 지에 달렸습니다. – brad

+0

감사합니다. 위의 편집을 참조하십시오 – Nir

관련 문제