1

私はかなり単純な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);
4

1 に答える 1

0

クリックでアンカーがトリガーされているように思えます。
イベントをリッスンし、デフォルト アクションを防止する必要があります。
このようなもの:

$('a').click(function(event){
    event.preventDefault();
});
于 2012-11-21T16:33:04.053 に答える