在查看了所有jquery draggable clone可能的重复项之后,我仍然无法找到必须是相当常见问题的答案。
我有一系列可以成功克隆的DIV元素,但是每个克隆都失去了它的可拖动功能,我查看了生成的代码,但仍然无法理解为什么会这样。
有什么线索吗?
<html lang="en">
<head>
<meta charset="utf-8" />
<title>jQuery UI Sortable - Cloning issue</title>
<style>
.bgblue {
background-color:#9CF;
}
.bgred {
background-color:#F36;
}
</style>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="JS/ui/jquery-ui-1.10.3.custom.min.js"></script>
<script>
function seCopyBox(x) {
z = $('.seBox').eq(x).clone();
z.insertAfter($('.seBox').eq(x));
}
$(function() {
$( ".seBox" ).draggable();
});
</script>
</head>
<body>
<div class="seBox bgblue">
<p onClick="javascript:var x=$(this).closest('.seBox').index();seCopyBox(x)">COPY</p>
<p>Div A</p>
</div>
<div class="seBox bgred">
<p onClick="javascript:var x=$(this).closest('.seBox').index();seCopyBox(x)">COPY</p>
<p>Div B</p>
</div>
<div class="seBox bgblue">
<p onClick="javascript:var x=$(this).closest('.seBox').index();seCopyBox(x)">COPY</p>
<p>Div C</p>
</div>
</body>
答案 0 :(得分:2)
在克隆元素附加到DOM后再次为{<1}}调用
draggable()
我会使用干净的jquery点击功能而不是内联javascript ..
function seCopyBox(x) {
z = $('.seBox').eq(x).clone();
z.insertAfter($('.seBox').eq(x)).draggable();
}
删除内联javascript和$(document).on('click','.seBox p',function(){
var x=$(this).closest('.seBox').index();
var z = $('.seBox').eq(x).clone();
z.insertAfter($('.seBox').eq(x)).draggable();
}
函数...
答案 1 :(得分:1)
最好将.draggable()
放置在克隆元素上。
$(document).on('click','.seBox p',function(){
var x=$(this).closest('.seBox').index();
var z = $('.seBox').eq(x).clone().draggable();
z.insertAfter($('.seBox').eq(x));
}
代替
$(document).on('click','.seBox p',function(){
var x=$(this).closest('.seBox').index();
var z = $('.seBox').eq(x).clone();
z.insertAfter($('.seBox').eq(x)).draggable();
}
只是我的建议。