2012-11-21 44 views
1

我有一個非常簡單的jQuery可拖/排序/ droppable組合進行的地方,我排序幾個div,其中每個包含一個圖像包裹在一個帶有href的錨點元素。jQuery可拖動的項目正在改變頁面的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); 
+2

ü可能要複製使用jsfiddle.net .. – thecodejack

回答

0

聽起來好像錨被上點擊觸發。
您需要監聽事件並防止默認操作。
事情是這樣的:

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

這已經完成的問題。沒有幫助。但是,謝謝。 – WackGet

+0

不用擔心,我無法在您的示例代碼中看到它,這就是我爲什麼要這麼做的原因。 – diggersworld

相關問題