Bir sürükle/bırak işlemi sırasında jQuery nesnesini dataTransfer
özelliğine iletmeye çalışılıyor. Özelliği jQuert.event.props
dizisine ekledikten sonra atayabiliyorum, ancak drop
olayında tanımsız olarak geri dönüyor. Burada eksik olduğumdan emin değilim.jQuery geçiş öğesi dataTransfer özelliği
JavaScript:
function dragClip(clip, event){
event.dataTransfer.el = clip;
/* Console confirms event.dataTransfer.el is the jQuery object */
}
function dropClip(target, event){
target.append(event.dataTransfer.el);
/* event.dataTransfer.el no longer has the object... where'd it go?? */
}
jQuery.event.props.push('dataTransfer');
$('#titles')
.bind('dragenter dragover', false)
.bind('drop', function(event){
dropClip($(this), event);
});
$('.clip').bind('dragstart', function(event){
dragClip($(this), event);
});
GÜNCELLEME: ayrıntı kaldırmak için yeniden yapıldı
. Orada bulunan başka şeyler vardı, ama anonim bir fonksiyon sadece yeterli olacaktır:
jQuery.event.props.push('dataTransfer');
$('#titles')
.bind('dragenter dragover', false)
.bind('drop', function(event){
$(this).append(event.dataTransfer.el);
});
$('.clip').bind('dragstart', function(event){
event.dataTransfer.el = $(this);
});
GÜNCELLEME
@ gereğince Barney'nin nihai cevabı, benim son çalışma kodunu. Orijinal olayı kullanmamın bir nesneyi veri olarak geçirmeme izin vermediğini fark ettim, bunun yerine kimliği uygulayarak jQuery nesnesini bırakarak yeniden oluşturdum. Ayrıca bildirilen işlevlerden kurtulmak için her şeyi sıkın. Daha az kod, aynı sonuç.
$('#titles')
.bind('dragenter dragover', false)
.bind('drop', function(event){
$(this).append($('#' + event.originalEvent.dataTransfer.getData('clip')));
});
$('.clip')
.bind('dragstart', function(event){
event.originalEvent.dataTransfer.setData('clip', $(this).attr('id'));
});
+1. Bu bana yardımcı oldu. –