【问题标题】:Delete from array when li is outside selection area当 li 在选择区域之外时从数组中删除
【发布时间】:2014-03-05 11:24:35
【问题描述】:

我用 jQuery 的鼠标事件对选择区域进行了编码,但我遇到了一个问题,我尝试从数组中删除信息,当鼠标离开它并且它不在选择区域之外时,我保存了可选择项 li 的信息。谢谢大家。

EX: This is the work that i do it

【问题讨论】:

  • 我刚刚检查了您的代码和演示,观察到数组和选定的 LI 在离开鼠标后没有恢复。所以你需要帮助来实现这一点,对吧?

标签: jquery select mouseevent area


【解决方案1】:

您只需要初始化 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”事件时的列表项选择。

演示链接:http://jsbin.com/hotiwiro/2

【讨论】:

  • 我不想在 mouseup 上清除数组,我想在单个项目不在选择区域时删除它。谢谢和问候!
  • 您要删除选定区域外的单个项目或所有项目?
  • 用新的代码块更新了我的答案,以隐藏/删除选定区域之外的项目,还包括演示链接。
  • 我想删除未进入选择区域但在数组中的项目,例如,我拖动光标并将多个项目添加到数组中,但不停止按住左光标我更改从某个项目中退出的选择区域。
  • Lukas,查看我更新的答案,其中也有演示链接 (jsbin.com/hotiwiro/2)。
猜你喜欢
  • 1970-01-01
  • 2016-11-03
  • 1970-01-01
  • 1970-01-01
  • 2015-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多