Рассмотрим следующий пример.
$(function() {
function dragItems(dObj) {
dObj.draggable({
containment: "parent"
});
}
var item = '<div class="item"></div>';
$("#field").append(item);
dragItems($("#field .item"));
});
#field {
width: 400px;
height: 200px;
background: #CFC;
}
.item {
width: 100px;
height: 100px;
background: #CCC;
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<div id="field"></div>
Я подозреваю, что в вашем примере есть больше кода.Это обернуто в $(function(){});
, который будет ждать, пока document
не станет ready
.Аналогично $(window).on('load')
.
Функция настроена на прием объекта jQuery и назначение объекта Draggable.Поэтому вы должны передать ему объект $("#field .item")
.
Теперь, если вы создали объект первым, кода могло бы быть немного меньше.Ваш текущий код не создает объект, а добавляет строку HTML путем добавления.Рассмотрим следующее.
$(function() {
function dragItems() {
$("#field .item").draggable({
containment: "parent"
});
}
var item = $("<div>", {
class: "item"
});
$("#field").append(item);
dragItems();
});
#field {
width: 400px;
height: 200px;
background: #CFC;
}
.item {
width: 100px;
height: 100px;
background: #CCC;
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<div id="field"></div>
Это, я думаю, больше похоже на то, что вы хотите сделать, когда вы просто делаете все элементы .item
перетаскиваемыми.Вы можете использовать любой метод.Я бы просто позаботился о том, чтобы вы так или иначе создали объект для использования с Dragable.
Надеюсь, это поможет.