2010-08-10 6 views
1

J'utilise facebox plugin sur certains liens.comment désactiver facebox (jquery)

Je souhaite désactiver dynamiquement certains liens. donc en cliquant sur eux n'ouvrira pas facebox.

J'ai essayé plusieurs façons de le faire mais aucune d'entre elles ne semble fonctionner. Facebox fonctionne toujours en cliquant sur les liens.

J'ai même essayé ceci (empêcher les événements clic et souris), mais cela ne désactive toujours pas l'apparition de la facebox.

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

Que puis-je faire?

EDIT:

Après brad et PetersenDidIt conseils J'ai essayé ceci:

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

et toujours pas de chance. De plus je vois que le cadre facebox apparaît sous le dialogue d'alerte. ce qui signifie que facebox commence avant même que mes événements click/mousedown ne soient appelés.

Est-il possible de joindre un événement qui se produira avant tous les autres événements?

Peut-être que facebox utilise un autre événement (pas de clic ou de mousedown). Qu'est-ce que ça peut être?

Répondre

1

preventDefault empêche tout quel que soit le comportement normal de ce clic (par exemple rediriger sur un lien).

Je ne l'ai jamais utilisé facebox, donc je ne sais pas comment il lie ses événements, mais vous voulez probablement quelque chose de plus comme:

event.stopImmediatePropagation() 

EDIT

Ressemble utilisations FaceBox C'est un événement personnalisé. Vous pouvez le voir dans la source (ci-dessous). Donc, votre meilleur pari est de délier votre élément de cet événement:

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

Facebox fonction publique

$.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

Merci! s'il vous plaît voir modifier ci-dessus – Nir

+0

voir ci-dessus modifier ... – brad

+0

Merci brad! $ ("ele"). Unbind ("click.facebox"); ne fonctionne pas car cette syntaxe nécessite de spécifier le nom de la fonction liée. Cependant: $ ("# who_button"). Unbind(); Ça semble bien fonctionner. – Nir

0
+0

ce ne fera qu'empêcher bouillonne sur les éléments parents. Si le clic est lié directement à l'élément référencé ci-dessus, il se déclenchera toujours. Dépend de la façon dont Facebox lie ses événements. – brad

+0

Merci! S'il vous plaît voir modifier ci-dessus – Nir