2016-02-18 25 views
0

下面是我的拖放腳本,它似乎像一個魅力,但我想補充的是,如果我在一個已經包含相同的div比它應該給我一個警告,這個可拖動的元素已經存在或類似的,爲了實現這個我申請.prevAll.each()函數得到的ID和比較最後被放下的股利。所以它比較了id的罰款,但是當我放棄已經存在的div時,它完全跳出.prevAll.each()的情況,它會像其他人一樣警告它自己的id,但它不會出現在.prevAll中,爲什麼?如果已經丟失的警告div使用jquery再次丟棄

總結我想要的是:

  1. 編輯下面的方法來獲得警報,如果已經存在的div被丟棄。
  2. 或者任何其他方法也將不勝感激,如果它給了我相同的功能,並不會影響任何其他的事情,我已經嘗試過.length方法它不起作用。

我希望我能夠解釋,任何幫助,將不勝感激,謝謝

$(".dragable").draggable({ 
    cancel: "a.ui-icon", 
    revert: true, 
    helper: "clone", 
    cursor: "move", 
    live: true, 
    revertDuration: 0 


    }); 

$('.droppable').droppable({ 
    accept: ".dragable", 
    activeClass: "ui-state-highlight", 
    drop: function(event, ui) { 
    var $item = $(ui.draggable); 
    if (!$item.hasClass('clone')) { 
    $item = $item.clone().addClass('clone'); 
    $item.draggable({ 
     cancel: "a.ui-icon", 
     revert: true, 
     cursor: "move", 
     revertDuration: 0 
     }); 
} 
$(this).addClass('has-drop').append($item); 
var divIdIs = $(ui.draggable).attr("id"); 
//if($(".droppable:has()")) 
/*if($("#"+divIdIs).length>1){ 
alert("Yeah it does exist"); 
}*/ 
$("#"+divIdIs).prevAll().each(function() { 
    var upperDiv = $(this).attr('id'); 
    /*var tes=$("#"+divIdIs).length; 
    alert(tes);*/ 
    if(divIdIs == upperDiv){ 
    alert("Matched"); 
    } 
    else{ 
    alert("Not Matched"); 
    } 

    //if(divIdIs == existingdivId){} 
    //else{} 

    }); 

回答

2
drop: function(event, ui) { 

替換上面的線爲下方,並嘗試

if (ids.indexOf("," + ui.draggable[0].id + ",") >= 0) 
{ 
    alert("This div already exists"); 
    return; 
} 
ids += ui.draggable[0].id + ","; 

還要確保您在全球範圍內聲明以下變量,

var ids = ","; 
+0

我認爲它也會影響其他的東西,那麼我在做什麼的其他事情功能發生了什麼呢?讓我檢查並找回你 – Coder

+0

它的工作原理......並且我沒有刪除drop:function {}我將該代碼片段放在函數中,並且它的工作正確.. – Coder

+0

對不起..實際上你應該在下面添加這一行放下功能。抱歉我的拼寫錯誤。 – Sunil