我想模仿从Javascript中的Windows资源管理器中选择的文件。我注意到Windows资源管理器有两种类型的“选择”。一个是突出显示文件的正常选择,另一个是虚线,这意味着该文件目前正在关注。所以我使用“selected”和“focus”作为css类。在一个集合中选择它们的'Shift +单击'项的算法
Here你可以在我的网页上找到我的代码的例子。
在我的代码中,它只是找到焦点项目和当前项目之间的行并选择它们。
select: function (e) {
if (e.ctrlKey) {
rs.removeFocus();
$(this).toggleClass("selected");
$(this).addClass("focus");
}
else if (e.shiftKey) {
var focusItem = $("#Items p.focus");
var currentItem = $(this);
var betweenItems = rs.betweenItems(currentItem, focusItem);
rs.unSelectAll();
rs.removefocus();
$(betweenItems).each(function() {
this.addClass("selected");
});
focusItem.addClass("selected");
$(this).addClass("focus");
$(this).addClass("selected");
}
else {
rs.unSelectAll();
rs.removeFocus();
$(this).addClass("selected");
$(this).addClass("focus");
}
}
这个工作“好”,但它不完全像Windows资源管理器选择一样先进。在Windows资源管理器中,它们并不总是选择最后一个重点项目和当前项目之间的行。如果选择中没有“空白”,他们会将这些项目添加到选择中。但是如果有差距,它将从重点项目开始。
我不知道我该怎么做。看来他们在Windows中使用的算法对我来说有点复杂。所以如果有人能帮助我,或者把我推向正确的方向,我将不胜感激。
通向很多代码的途径。你不应该问这样的问题,因为你事实上是要求别人去做你的工作。也许你应该将这作为一个算法问题来解释? – 2010-06-02 17:28:36
我相信Windows中的“虚线”框更精确地表示聚焦,但未被选中。您可以按住控制键并使用箭头更改哪个项目具有焦点并使用空格键进行选择。 – 2010-06-02 18:24:55
@Sean Kinsey:感谢您的投入,我调整了我的问题并将其缩小了。 @JC:谢谢,我将'last'改为'focus',这是一个更好的名字。 – Pickels 2010-06-02 19:35:12