2014-03-25 67 views
0
var selections = []; 

$dragContainerDiv1.on("click", ".draggable1", function (event) { 
    event.stopPropagation(); 
    var $this = $(event.target); 
    if ($this.hasClass("selected")) { 
     $this.removeClass("selected"); 
     selections.splice(selections.indexOf($this), 1); 
    } 
    else { 
     selections.push($this); 
     $this.addClass("selected"); 
     initDraggable($this); 
    } 
}); 

我的數組似乎不穩定,我想這是因爲我的jQuery語法不正確。 click事件發生在包含text,data-id和data-text的div標籤列表中。這個想法是能夠多選可拖動的div。JQuery語法檢查 - 陣列數據

因此,當最初點擊時,它會將div添加到數組中並突出顯示它。再次單擊時,它會從陣列中刪除div。最終,選定的div組被拖放到放置區,在那裏我恢復數據並將其發佈到服務器。

如果我通過多個div快速點擊,看起來選定的div並不總是數組中的那些。

+0

您可以添加的jsfiddle這說明問題了嗎? – aravind

+0

這是做什麼的:'initDraggable($ this);'? –

+3

我不認爲'selections.indexOf($ this)'將永遠不會工作,因爲您每次都創建一個新對象,並且引用不會相同。是否有理由需要'selections'數組?爲什麼不在時間向服務器發送數據時選擇'$('。draggable1.selected')'? –

回答

1

您從您的選擇數組中刪除$ this不起作用。 selections.indexOf($ this)總是返回-1,因此您的selections.splice(-1,1)將從選擇中刪除最後一個元素。要在選擇存儲什麼是包含在$元素此對象:

selections.push($this[0]); 

和刪除時:

selections.splice(selections.indexOf($this[0]), 1);