假如左边有一堆图片列表,我现在想用js批量选中(按shift键) 然后拖拽到红框区域,有什么好的办法能够实现
附上测试代码
html>
<html>
<head>
<title>Sortable.js 批量选中和拖拽示例title>
<script src="../../js/Sortable.min.js">script>
head>
<body>
<div id="container1" class="container">
<img src="../images/mock/1.jpg" alt="">
<img src="../images/mock/2.jpg" alt="">
<img src="../images/mock/3.jpg" alt="">
<img src="../images/mock/4.jpg" alt="">
div>
<div id="container2" class="container">div>
body>
html>
<style>
#container1{
float:left;
}
#container1 img{
width: 80px;
height: 80px;
display: block;
margin-bottom: 10px;
}
#container2{
margin-left: 20px;
float:left;
width: 400px;
height: 400px;
border: 1px red solid;
background: #f3f3f3;
}
style>
<script>
var container1 = document.getElementById("container1");
var container2 = document.getElementById("container2");
var sortable = Sortable.create(container1, {
selectedClass: 'selected',
chosenClass: 'chosen',
animation: 150,
onEnd: function(evt) {
var itemEl = evt.item;
container2.appendChild(itemEl);
}
});
script>
http://www.gimoo.net/t/1504/55309352ab216.html
你可以在鼠标点击的时候,检查 shift 键是否松开,没有松开就多选
要实现批量选中多张图片并拖拽到另一个地方,可以通过以下步骤实现:
定义一个变量用于保存当前选中的图片元素。
给每个图片元素绑定 click 事件,当点击时切换其选中状态,并将其添加或从选中列表中删除。
给整个文档绑定 keydown 和 keyup 事件,当按下 Shift 键时将其状态设置为按下,松开时设置为弹起。
给容器绑定 dragover 事件,阻止默认行为。
给容器绑定 drop 事件,遍历选中的图片元素并将其添加到容器中。
以下是示例代码:
var container1 = document.getElementById("container1");
var container2 = document.getElementById("container2");
var selectedItems = [];
var shiftPressed = false;
// 给每个图片元素绑定 click 事件
container1.addEventListener('click', function(event) {
if (event.target.nodeName === 'IMG') {
var itemEl = event.target;
var index = selectedItems.indexOf(itemEl);
if (index === -1) {
// 没有选中,添加到选中列表
selectedItems.push(itemEl);
itemEl.classList.add('selected');
} else {
// 已选中,从选中列表中删除
selectedItems.splice(index, 1);
itemEl.classList.remove('selected');
}
}
});
// 给整个文档绑定 keydown 和 keyup 事件
document.addEventListener('keydown', function(event) {
if (event.key === 'Shift') {
shiftPressed = true;
}
});
document.addEventListener('keyup', function(event) {
if (event.key === 'Shift') {
shiftPressed = false;
}
});
// 给容器绑定 dragover 事件,阻止默认行为
container2.addEventListener('dragover', function(event) {
event.preventDefault();
});
// 给容器绑定 drop 事件
container2.addEventListener('drop', function(event) {
event.preventDefault();
for (var i = 0; i < selectedItems.length; i++) {
container2.appendChild(selectedItems[i]);
}
selectedItems = [];
});
最后,还需要在 CSS 样式表中添加一个选中状态的样式,例如:
.selected {
border: 2px solid red;
}
以实现批量选中多张图片并拖拽到另一个地方了。