鼠標鬆開不火的動態添加(除了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: ');});
我不認爲你將能夠得到IE來觸發mouseup事件。你想做什麼? – InvisibleBacon 2010-11-10 14:48:28
@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
經過幾次更多的測試似乎即使將ul和li放在原始文檔上,mouseup也不會在滾動條上觸發。 (FF除外) – silversky 2010-11-10 15:15:17