2010-11-10 74 views
8

鼠標鬆開不火的動態添加(除了Firefox)的元素滾動條上:除Firefox之外的所有瀏覽器中的Mouseup錯誤?

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: '); 
}); 

如果您點擊ul上的任何地方,將會觸發但不在滾動條上。除Firefox以外的所有瀏覽器都存在相同的問題。

如果更換「鼠標鬆開」與「鼠標按下」將觸發滾動條上也,在所有瀏覽器。

經過幾次更多的測試,它似乎沒有什麼區別,如果'ul'是dinamically添加或沒有,mouseup似乎不認爲滾動條是'ul'的一部分(FF除外) 。

如果你有「格」和「禮」與「P」替換「UL」同樣的問題。
<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

我不認爲你將能夠得到IE來觸發mouseup事件。你想做什麼? – InvisibleBacon 2010-11-10 14:48:28

+0

@InvisibleBacon我只是想做一個簡單的彈出式選擇列表。但IE瀏覽器不會在'mousedown'上返回false。所以我試圖做一個破解:解除'mousedown'上的模糊,並再次綁定'mouseup'上的模糊。但我發現mouseup不會在所有額外的滾動條上觸發(FF除外):http://stackoverflow.com/questions/4140317/does-anyone-know-if-ie-return-false – silversky 2010-11-10 15:02:42

+0

經過幾次更多的測試似乎即使將ul和li放在原始文檔上,mouseup也不會在滾動條上觸發。 (FF除外) – silversky 2010-11-10 15:15:17

回答

3

是啊。下面是在Chrome打開錯誤:http://code.google.com/p/chromium/issues/detail?id=14204

而WebKit的:https://bugs.webkit.org/show_bug.cgi?id=25811https://bugs.webkit.org/show_bug.cgi?id=40648

下面是從微軟屈尊「你不需要它」迴應:http://social.msdn.microsoft.com/Forums/en-US/netfxjscript/thread/3749b8a1-53ef-48fe-be81-b2df39d6154f/

這最後一個線程帶來了可能性使用onscroll作爲onmouseup的替代品。這可能是部分解決方法。

相關問題