私はかなり単純なjQueryのドラッグ可能/ソート可能/ドロップ可能な組み合わせを使用して、いくつかのdivをソートしています。各divには、hrefを持つアンカー要素にラップされた画像が含まれています。
問題は、並べ替え可能なアイテムを「ごみ箱」のドロップ可能な領域に (破棄するために) ドラッグすると、ページの場所が変更され、ドラッグ可能な領域内から href URL に移動することがあります!
私はページから地獄をデバッグしましたが、これを引き起こしているのは私のコードではありません。ドロップ イベントは正常に発生し、問題なく返されます (true と false を返そうとしました)。これは、jQuery UI のコード内にあるもので、href が起動されます。
毎回起こるわけではありません。要素を「クリック」するのではなく、ドラッグするだけです。
誰か提案をお願いできますか?
私のドロップ可能なコードの例:
var trash = this._area_trash.droppable({
drop: this.eventtrashDrop,
hoverClass: 'highlight'
});
// ...
this.eventtrashDrop = function(event,ui) {
var o = ui.draggable;
if( typeof(o)=='object' && o!=null ) {
if( o.parents(obj._selector_stack_area).length>0 ) {
var id = parseInt(o.attr('lang'));
o.remove();
obj.eventStateRemove(id);
}
}
// Page location hasn't been changed yet!
return true;
}
編集:元の問題はまだ残っており、jQuery UI の何らかのバグであると思われます。ただし、回避策は、ソート可能なアイテムを破棄する前にアンカー要素を div に置き換えて、アンカーの href に変更できないようにすることです。
var anchor = jQuery(o).find("a");
var img = jQuery(anchor).html();
jQuery(anchor).replaceWith("<div/>").html(img);