Проблема в том, что при перетаскивании .item
в .content
новый элемент внутри .content
не содержит атрибута data-itemtype
.Чтобы нацелиться на этот атрибут, вам нужно обратиться к элементу напрямую с помощью чего-то вроде var itemtype = $('.item').data('itemtype')
.
. Это можно увидеть следующим образом:
$(document).ready(function() {
$('.item').draggable({
helper: function(e) {
return $('<div>').addClass('block').text($(e.target).text());
},
connectToSortable: ".content",
opacity: .8,
});
///
$('.content').sortable({
placeholder: 'block-placeholder',
update: function(event, ui) {
// turn the dragged item into a "block"
ui.item.addClass('block');
var itemtype = $('.item').data('itemtype');
alert('this: ' + itemtype);
}
});
//
});
.item, .content {
width: 100px;
height: 100px;
border: 1px solid black;
float: left;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.min.js"></script>
<div class='item' data-itemtype="title">Title</div>
<div class="content"></div>
В качестве альтернативы вам необходимо добавить атрибут к элементу при его копировании, например, $(ui.item).attr('data-itemtype', $('.item').data('itemtype'))
:
$(document).ready(function() {
$('.item').draggable({
helper: function(e) {
return $('<div>').addClass('block').text($(e.target).text());
},
connectToSortable: ".content",
opacity: .8,
});
///
$('.content').sortable({
placeholder: 'block-placeholder',
update: function(event, ui) {
// turn the dragged item into a "block"
ui.item.addClass('block');
$(ui.item).attr('data-itemtype', $('.item').data('itemtype'));
var itemtype = ui.item.data('itemtype');
alert('this: ' + itemtype);
}
});
//
});
.item, .content {
width: 100px;
height: 100px;
border: 1px solid black;
float: left;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.min.js"></script>
<div class='item' data-itemtype="title">Title</div>
<div class="content"></div>