jQuery draggable项目在放入“垃圾箱”时正在更改页面的href

时间:2012-11-21 12:06:42

标签: javascript jquery jquery-ui

我有一个非常简单的jQuery draggable / sortable / droppable组合,我正在对几个div进行排序,每个div包含一个包含在带有href的锚元素中的图像。

问题是,当我将可排序项目拖到“垃圾”可放置区域(以销毁它)时,页面有时会更改其位置并从可拖动的内容转到href URL!

我已经调试了页面的地狱,这不是我的任何代码造成的。 drop事件正常发生并返回(我试过返回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替换anchor元素,使其无法更改为锚点的href:

        var anchor = jQuery(o).find("a");
        var img    = jQuery(anchor).html();
        jQuery(anchor).replaceWith("<div/>").html(img);

1 个答案:

答案 0 :(得分:0)

听起来像点击时触发了锚点 您需要侦听事件并阻止默认操作 像这样:

$('a').click(function(event){
    event.preventDefault();
});