Jquery在不同位置拖放
Jquery Drag and Drop at different locations
我有几个可拖动的按钮和一个可拖动的文本区。当我将一个可拖拽按钮拖到文本区域时,它将显示一些代码。如果我再拖一个按钮,与该按钮相关的文本将追加到前一个按钮。
我的问题是我怎么能把我的下一个按钮文本/片段之间的这两个代码片段?
这是我的代码
脚本:
$("button").click(function () {
$("#div1").empty();
});
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData('Text/html', ev.target.id);
}
function drop(ev, target) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text/html");
var function1 = "test1{ 'n'n'n}";
var function2 = "test2{ 'n'n'n}";
var variable1 = "var first;";
var variable2 = "var second;";
console.log("****",target);
if (data == "test1") {
if (data) {
$('#div1').append(function1);
}
}
if (data == "test2") {
if (data) {
$('#div1').append(function2);
}
}
if (data == "test3") {
if (data) {
$('#div1').append(variable1);
}
}
if (data == "test4") {
if (data) {
$('#div1').append(variable2);
}
}
}
HTML: <table>
<tr>
<td>
<button id="test1" ondragstart="drag(event)" draggable="true">Function-1</button><hr>
<button id="test2" ondragstart="drag(event)" draggable="true">Function-2</button><hr>
<button id="test3" ondragstart="drag(event)" draggable="true">Variable-1</button><hr>
<button id="test4" ondragstart="drag(event)" draggable="true">Variable-2</button><hr>
</td>
<td>
<textarea id="div1" ondrop="drop(event, this)" ondragover="allowDrop(event)"></textarea>
</td>
</tr>
</table>
<br>
<button>Clear</button>
小提琴: http://jsfiddle.net/ktL02h7u/16/
我添加了jQuery UI到你的fiddle,也改变了texarea为<pre>
标签和所有的行你添加我包装他们在<code>
,所以他们将是元素,你可以拖动
页面加载后,我使用$("#div1").sortable();
,这使得孩子排序。如果你想让元素顺利地回到它们的位置,你可以明显地给元素添加过渡。
查看一下:http://jsfiddle.net/ktL02h7u/32/
function drop(ev, target) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text/html");
var function1 = "test1{ 'n'n'n}";
var function2 = "test2{ 'n'n'n}";
var variable1 = "var first;";
var variable2 = "var second;";
if (data == "test1") {
if (data) {
$('#div1').append("<code>"+function1+"<br></code>");
}
}
if (data == "test2") {
if (data) {
$('#div1').append("<code>"+function2+"<br></code>");
}
}
if (data == "test3") {
if (data) {
$('#div1').append("<code>"+variable1+"<br></code>");
}
}
if (data == "test4") {
if (data) {
$('#div1').append("<code>"+variable2+"<br></code>");
}
}
}
$(function() {
$( "#div1" ).sortable();
});
编辑:主要的代码更改后,我明白你想在元素的内部:http://jsfiddle.net/ktL02h7u/66/
function drop(ev, target) {
debugger;
ev.preventDefault();
var data = ev.dataTransfer.getData("text/html");
var $target = target ? $(target) : $(ev.target);
var elementTypes = {
test1: "test1{ 'n'n'n<span class='functionClose'>}</span>",
test2: "test2{ 'n'n'n<span class='functionClose'>}</span>",
test3: "var first;",
test4: "var second;"
}
if(data){
var el = $("<code>"+elementTypes[data]+"<br></code>");
if(el.find("span").length > 0){
el.on("dragover",function(ev){
console.log("dragged over");
ev.preventDefault();
ev.stopPropagation();
allowDrop(ev);
}).on("drop", function(ev){
console.log("dropped over");
ev.preventDefault();
ev.stopPropagation();
drop(ev.originalEvent,el.find("span")[el.find("span").length -1]);
});
}
if($target.hasClass("functionClose")){
$target.before(el);
}
else{
$target.append(el);
}
}
}
相关文章:
- 在单独的容器中拖放,并调整放置的元素的位置
- 用JS触摸点击附近的拖放位置
- 拖放位置放置 jquery
- 在拖动/拖放事件上获取 Firefox 内容可编辑的拖放光标位置
- 从 IE9 拖放事件获取文件位置
- 如何在拖放后将 x 和 y 位置保存到 jSon 文件
- 拖放位置相对
- jquery:使用cookie保存拖放位置
- 为什么这种CSS样式会干扰HTML5的拖放?(位置:绝对;左:-10000px)
- 角度拖放保存在数据库中的位置和屏幕大小调整问题
- 谷歌地图V3保存用户使用拖放后的地图位置;滴
- 使用JavaScript(或jQuery)在HTML元素中拖放以滚动位置
- 拖放jQuery保存位置到mysql数据库
- 拖放时显示位置和合计
- jQuery UI拖放鼠标位置问题
- 如何找到可拖放元素相对于可拖放区域的位置?
- 可拖放的Jquery UI开关位置
- Jquery在不同位置拖放
- 使用Dragula拖放保存拖动项目的位置,React版本(React - Dragula)
- HTML5在屏幕上的任意位置拖放