2010-11-10 12 views
8

mouseup Feuer nicht auf Bildlaufleiste für Elemente dynamisch hinzugefügt (außer Firefox):Mausefehler in allen Browsern außer 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: '); 
}); 

Wenn Sie irgendwo klicken auf die ul wird aber nicht auf Bildlaufleiste Feuer. Dasselbe Problem existiert in allen Browsern außer Firefox.

Wenn Sie "MouseUp" mit "MouseDown" ersetzen, wird auch in allen Browsern auf Bildlaufleiste ausgelöst.

Nach ein paar weiteren Tests scheint es keinen Unterschied zu machen, ob die 'ul' dynamisch hinzugefügt wird oder nicht, das mouseup scheint die Bildlaufleiste nicht als Teil von 'ul' zu erkennen (außer FF) .

Und das gleiche Problem, wenn Sie 'ul' mit 'div' und 'li' mit 'p' ersetzen.
<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

Ich glaube nicht, dass Sie in der Lage sein werden, IE zu veranlassen, das MouseUp-Ereignis auszulösen. Was versuchst du zu machen? – InvisibleBacon

+0

@InvisibleBacon Ich mache einfach eine einfache Popup-Auswahlliste. Aber der IE gibt bei "mousedown" nicht false zurück. Also habe ich versucht, einen Hack zu machen: um Unschärfe auf "mousedown" zu lösen und erneut die Unschärfe auf "mouse up" zu binden. Aber ich habe festgestellt, dass Mouseup nicht auf Scrollbar in allen Brauen (außer FF) ausgelöst wird: http://stackoverflow.com/questions/4140317/does-anyone-know-if-ie-return-false – silversky

+0

Nach ein paar weiteren Tests Es scheint, dass Mouseup nicht auf Bildlaufleiste feuert, auch wenn die ul und li auf das ursprüngliche Dokument platziert sind. (außer FF) – silversky

Antwort

3

Yup. Hier ist die offene Bug auf Chrome: http://code.google.com/p/chromium/issues/detail?id=14204

Und auf Webkit: https://bugs.webkit.org/show_bug.cgi?id=25811 und https://bugs.webkit.org/show_bug.cgi?id=40648

hier eine herablassende „Sie brauchen es nicht“ Antwort von Microsoft: http://social.msdn.microsoft.com/Forums/en-US/netfxjscript/thread/3749b8a1-53ef-48fe-be81-b2df39d6154f/

Die letzten Thread die Möglichkeit bringt Verwendung von onscroll als Ersatz für onmouseup. Dies kann eine teilweise Abhilfe sein.

Verwandte Themen