【发布时间】:2011-05-07 22:05:58
【问题描述】:
Mouseup 不会在滚动条上触发动态添加的元素(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: ');
});
如果您单击ul 上的任意位置,将触发但不会在滚动条上触发。除了火狐之外的所有浏览器都存在同样的问题。
如果在所有浏览器中将“mouseup”替换为“mousedown”,滚动条也会触发。
经过几次测试后,似乎它是否添加了动态的“ul”并没有什么不同,mouseup 似乎没有将滚动条识别为“ul”的一部分(FF 除外)。
如果将 'ul' 替换为 'div' 并将 'li' 替换为 '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: ');});
【问题讨论】:
-
我认为您无法让 IE 触发 mouseup 事件。你想做什么?
-
@InvisibleBacon 我只是想做一个简单的弹出选择列表。但是 IE 在“mousedown”上不会返回 false。所以我试图做一个hack:解除'mousedown'上的模糊并再次绑定'mouseup'上的模糊。但我发现 mouseup 不会在所有眉毛的滚动条上触发(FF 除外):stackoverflow.com/questions/4140317/…
-
经过几次测试后,即使 ul 和 li 放在原始文档上,mouseup 似乎也不会在滚动条上触发。 (FF除外)
标签: jquery mouse scrollbar live