我有一个带有mouseleave事件监听器的可排序列表,但它的行为不正确。
如果我在可排序列表中移动鼠标,mouseleave会正确触发。
如果我首先点击并拖动其中一个可排序的子元素,mouseleave会不正确地触发 - 时断时续或根本没有触发。
有什么想法吗?
谢谢。
更新:mouseout事件也会出现这种情况。
如果我在可排序列表中移动鼠标,mouseleave会正确触发。
如果我首先点击并拖动其中一个可排序的子元素,mouseleave会不正确地触发 - 时断时续或根本没有触发。
有什么想法吗?
谢谢。
更新:mouseout事件也会出现这种情况。
<style>
#sortable { list-style-type: none; margin: 0; padding: 0; float: left; margin-right: 10px; background-color: #CCC; }
#sortable li { margin: 0 5px 5px 5px; padding: 5px; font-size: 1.2em; width: 120px; }
</style>
<script>
$(function(){
$("#sortable").sortable().disableSelection();
$("#sortable").mouseleave(function(){ console.log("mouseleave"); });
});
</script>
<ul id="sortable">
<li class="ui-state-default">Item 1</li>
<li class="ui-state-default">Item 2</li>
<li class="ui-state-default">Item 3</li>
</ul>
更新 我已经使用了以下代码来检测子元素是否完全被拖出可排序区域:
$("#sortable li").mousemove(function() {
if ($(this).offset().left > $(this).parent().outerWidth() + $(this).parent().offset().left ||
$(this).offset().top > $(this).parent().outerHeight() + $(this).parent().offset().top ||
$(this).offset().left + $(this).outerWidth() < $(this).parent().offset().left ||
$(this).offset().top + $(this).outerHeight() < $(this).parent().offset().top ){
console.log("child is outside parent");
}
});
mouseout
吗? - taddocument.getElementById("sortable").addEventListener("mouseout", onmouseout, false);
添加一个鼠标移出事件监听器,我会得到相同的行为。 - John