【发布时间】:2014-03-05 11:24:35
【问题描述】:
我用 jQuery 的鼠标事件对选择区域进行了编码,但我遇到了一个问题,我尝试从数组中删除信息,当鼠标离开它并且它不在选择区域之外时,我保存了可选择项 li 的信息。谢谢大家。
【问题讨论】:
-
我刚刚检查了您的代码和演示,观察到数组和选定的 LI 在离开鼠标后没有恢复。所以你需要帮助来实现这一点,对吧?
标签: jquery select mouseevent area
我用 jQuery 的鼠标事件对选择区域进行了编码,但我遇到了一个问题,我尝试从数组中删除信息,当鼠标离开它并且它不在选择区域之外时,我保存了可选择项 li 的信息。谢谢大家。
【问题讨论】:
标签: jquery select mouseevent area
您只需要初始化 files 数组并在 'mouseup' 事件时恢复为 LI 添加的 CSS 规则,因此 'mouseup' 事件处理程序的新代码块如下所示:
.mouseup(function(e){
page.off('mousemove');
li.off('mouseover');
selection.hide();
// Added code lines
files = [];
li.css({'background':'transaparent'});
});
更新了您的演示页面代码,现在您可以在新的demo page 中检查选择行为。
更新 1:
请参考下面的代码块,它在“mouseup”事件时将元素隐藏在选择区域之外。
.mouseup(function(e){
page.off('mousemove');
li.off('mouseover');
selection.hide();
li.each(function(){
if (jQuery.inArray($(this).attr('class'), files) == -1) {
$(this).css({'display':'none'});
//$(this).remove(); // This statement removes the element from DOM
}
});
});
演示链接:http://jsbin.com/baxogumo/2
更新 2:
进行了必要的更改,所以现在应该可以按照您想要的方式工作,请查看下面指定的演示链接。
现在我们通过考虑性能并使其正常工作来处理“mouseup”事件时的列表项选择。
【讨论】: