2010-11-10 5 views
8

mouseup ne se déclenche pas sur la barre de défilement pour les éléments ajoutés dynamiquement (sauf Firefox):Mouseup bug dans tous les navigateurs sauf Firefox?

CSS:

#dBox { 
    height: 100px; 
    width: 230px; 
    overflow - y: auto; 
} 

HTML:

<input type="text" id="s">

JQuery:

$(function() { 
    $('#s').focus(function() { 
     var $dbox = $('<ul id="dBox"></ul>'); 
     for (i = 0; i < 10; i++) $dbox.append('<li>' + i + '</li>'); 
     $(this).after($dbox); 
     $dbox.bind("mouseup", function() { 
      alert('in: '); 
      //console.log ('in: '); 
     }); 
    }); 
}); 
// OR LIKE THIS 
$('#s').focus(function() { 
    var $dbox = $('<ul id="dBox"></ul>'); 
    for (i = 0; i < 10; i++) $dbox.append('<li>' + i + '</li>'); 
    $(this).after($dbox); 

}); 
$('#dBox').live("mouseup", function() { 
    alert('in: '); 
    //console.log ('in: '); 
}); 

Si vous cliquez n'importe où sur le ul se déclenchera mais pas sur la barre de défilement. Le même problème existe dans tous les navigateurs sauf Firefox.

Si vous remplacez «mouseup» par «mousedown», cela se déclenchera également dans tous les navigateurs. Après quelques tests supplémentaires, il semble que cela ne fait aucune différence si le 'ul' est ajouté de manière dinamique ou non, le mouseup ne semble pas reconnaître la barre de défilement dans le cadre de 'ul' (sauf FF) .

Et le même problème si vous remplacez «ul» par «div» et «li» par «p».
<div id="dBox" class="" ><p>1</p><p>2</p><p>3</p><p>4</p><p>5</p><p>6</p><p>7</p><p>8</p><p>9</p></div>

$('#dBox').mouseup(function() {alert ('in: ');});

+0

Je ne pense pas que vous serez en mesure d'obtenir IE pour déclencher l'événement mouseup. Qu'essayez-vous de faire? – InvisibleBacon

+0

@ InvisibleBacon Je veux juste faire une simple liste de sélection. Mais IE ne renvoie pas false sur 'mousedown'. J'ai donc essayé de faire un hack: pour délier le flou sur 'mousedown' et relier le flou sur 'mouseup'. Mais j'ai découvert que mouseup ne se déclenchera pas sur la barre de défilement de tous les sourcils (sauf FF): http://stackoverflow.com/questions/4140317/does-anyone-know-if-ie-return-false – silversky

+0

Après quelques tests supplémentaires il semble que mouseup ne se déclenche pas sur la barre de défilement même si le ul et li sont placés sur le document original. (sauf FF) – silversky

Répondre

3

Eh oui. Voici le bug ouvert sur Chrome: http://code.google.com/p/chromium/issues/detail?id=14204

Et sur webkit: https://bugs.webkit.org/show_bug.cgi?id=25811 et https://bugs.webkit.org/show_bug.cgi?id=40648

Voici une condescendant réponse « vous ne avez pas besoin » de Microsoft: http://social.msdn.microsoft.com/Forums/en-US/netfxjscript/thread/3749b8a1-53ef-48fe-be81-b2df39d6154f/

Ce dernier fil offre la possibilité d'utiliser le onscroll comme un substitut pour onmouseup. Cela peut être une solution de contournement partielle.

Questions connexes