是否可以在鼠标单击 div 的子级并让它拖动父级时启用拖动?
在此示例中,我试图让可拖动对象同时适用于 div 和 select。当您单击选择并尝试拖动时,没有任何反应。
<div id="draggable" class="ui-widget-content">
<select>
<option>Drag Me</option>
</select>
</div>
$(function() {
$( "#draggable" ).draggable();
});
是否可以在鼠标单击 div 的子级并让它拖动父级时启用拖动?
在此示例中,我试图让可拖动对象同时适用于 div 和 select。当您单击选择并尝试拖动时,没有任何反应。
<div id="draggable" class="ui-widget-content">
<select>
<option>Drag Me</option>
</select>
</div>
$(function() {
$( "#draggable" ).draggable();
});
这是一个例子:LIVE DEMO
它与您的组合框不太兼容,因为它捕获鼠标单击事件以显示其选项,但它正在工作。
$(document).ready(function(){
var click = false,
top = null,
left = null;
$(document).bind('mousemove', function (e) {
if (click == true) {
$('#draggable').css({
left: e.pageX - left,
top: e.pageY - top
});
}
});
$('#draggable').draggable().click(function(e) {
top = e.pageY - $('#draggable').position().top;
left = e.pageX - $('#draggable').position().left;
click = !click;
return false;
});
$('html').click(function() {
click = false;
});
});
我认为这是不可能的,因为选择如何与不同的浏览器一起工作。您可以使用 UL 和 LI 构建您自己的选择。
或者,您可以在用户可以选择隐藏的选择上方添加 [拖动我]。<--无论如何,这对用户来说更友好。
我认为这是不可能的,因为事件处理程序。<option>
有自己的事件处理程序,因此它可以防止从 JQuery 触发拖放事件。您可以尝试其他对象,例如<ul>
and <li>
。请看一下这个示例:jquery sample