2010-08-13 22 views
1

J'essaie de dissocier l'événement mouseup d'un élément. J'ai essayé ce qui suit, mais aucun ne fonctionne.Désactiver le mouseup?

$('#myElm').unbind('mouseup'); 
$('#myElm').unbind('onmouseup'); 
$('#myElm').unbind('click'); 

Comment vous UNBIND un événement attribué en utilisant $ ('# myElm') mouseup (function ({...}); ???

Edit:. Ajout de code complet

..
cacheBgArea.mouseup(function(){ 
     var $cursorInElm = $(cacheBgArea.selectedText().obj); 
     var selectFontSize = parseInt($cursorInElm.css('fontSize')), selectFontFace = $cursorInElm.css('fontFamily'); 
     $fontSizeSlider.slider('value', selectFontSize); 

     $chooseFontFace.find('option').each(function(){ 
     var $this = $(this); 
     if ($this.val() == selectFontFace) { 
      $this.attr('selected', true); 
      return false; 
     } 
     }); 
     log('font weight: ' + $cursorInElm.css('fontWeight')); 
     if ($cursorInElm.css('fontWeight') == 'bold' || $cursorInElm.css('fontWeight') == 401) { 
     $boldCheckbox.attr('checked', true).change(); 
     } else { 
     $boldCheckbox.attr('checked', false).change(); 
     } 

     var objText = cacheBgArea.selectedText(); 
     if (objText.obj.nodeName == 'a' || objText.obj.nodeName == 'A') { 
     $cursorInElm = $(objText.obj) 
     var elmsHref = $cursorInElm.attr('href'); 
     if (elmsHref && elmsHref != '#') { 
      $enterOwnLink.val(elmsHref).show(); 
      $switchToPage.show(); 
      $chooseLinkPage.hide(); 
      $chooseLinkTitle.html('Enter a Web Address'); 
     } else if ($cursorInElm.attr('linkPageId')) { 
      $chooseLinkPage.find('option').each(function(){ 
       var $this = $(this); 
       if ($this.val() == $cursorInElm.attr('linkPageId')) { 
        $this.attr('selected', true); 
        return false; 
       } 
      }); 
      $enterOwnLink.hide(); 
      $switchToPage.hide(); 
      $chooseLinkPage.show(); 
      $chooseLinkTitle.html('Choose a Page'); 
     } 
     } else { 
     $('#noneLink').attr('selected', true); 
     $enterOwnLink.hide(); 
     $switchToPage.hide(); 
     $chooseLinkPage.show(); 
     $chooseLinkTitle.html('Choose a Page'); 
     } 
    }); 

J'ai vérifié que cacheBgArea en effet défini Oui, l'événement est lié avant la unbind est appelée Ceci est la unbind (journal est juste mon raccourci pour console.log();).

log('cacheBgArea.length: ' + cacheBgArea.length); 
cacheBgArea.unbind('mouseup');//TODO: fix this, not unbinding... 
+0

'$ ('# myElm'). Unbind ('click');' est totalement correct. – jAndy

+1

* Quand * est le unbind appelé? Cela semble être le problème. –

+0

@Nick - J'ai un panneau coulissant dans le bas. Le mouseup est lié quand il s'ouvre. Le unbind est appelé quand il se ferme. Je reçois le message de log pour que je puisse dire que unbind est appelé quand il se ferme et que cacheBgArea est encore défini. – UpHelix

Répondre

8

Cela devrait fonctionner:

$('#myElm').unbind('mouseup'); 

Pouvez-vous envoyer votre code de liaison complète? Aussi, êtes-vous sûr que cela fonctionne après le .mouseup() couru?

.mouseup(func) est un raccourci pour .bind('mouseup', func) de sorte que le unbind match est .unbind('mouseup') (notez ce délie tous des mouseup gestionnaires, pas seulement la fonction anonyme, vous aurez besoin d'une fonction nommée si vous souhaitez supprimer un gestionnaire spécifique) .

+0

K, j'ai ajouté le code complet. La façon dont je peux dire que l'événement est toujours lié est parce que je reçois toujours de nouveaux messages de log sur mouseup après que je l'ai détaché. – UpHelix

+0

@Dale - Quand appelez-vous '.unbind()'? Je ne le vois pas dans votre code, c'est dans un morceau séparé, avez-vous un lien de page par hasard? –

+0

@Nick - Son tout en bas de ma question dans un morceau de code séparé. (juste au-dessus des balises) – UpHelix