【问题标题】:jQuery draggable item is changing the href of the page when dropped into "trash"jQuery可拖动项目在放入“垃圾箱”时正在更改页面的href
【发布时间】:2012-11-21 12:06:42
【问题描述】:

我有一个非常简单的 jQuery 可拖动/可排序/可放置组合,我正在对多个 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 替换锚元素,这样它就不能更改为锚的 href:

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

【问题讨论】:

  • 你可能不得不使用 jsfiddle.net 复制问题..

标签: javascript jquery jquery-ui


【解决方案1】:

在我看来,锚点在点击时被触发。
您需要监听事件并阻止默认操作。
像这样的:

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

【讨论】:

  • 不用担心,我在您的示例代码中看不到它,这就是我建议它的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多