2015-05-07 28 views
0

我正在動態添加和刪除用戶創建的列表中的複選框。如果放在列表上的項目是一個單詞,但是如果它包含空格則無效。我明白爲什麼它不會工作,但無法找到如何成功拼接數組中正確的一個。當有2個字符串時,按空格分割數組


var boxCounter=0; 
function addToCheckListNew(item){ 
    var newSet = '<fieldset data-role="controlgroup" class="cbGroup' + boxCounter + '"></fieldset>'; 
    $('.cbDiv').append(newSet); 
    var newBox = '<input type="checkbox" name="checkbox-' + boxCounter + '" id="checkbox-' + boxCounter + '" class="custom" /> <label for="checkbox-'+ boxCounter + '">'+item+'</label>'; 
    $(".cbGroup" + boxCounter).append(newBox).trigger('create'); 
    boxCounter++; 
    $("#new-list-page-iteminput").val(""); 
    $("#new-list-page-itemlist").listview("refresh"); 
    currentList.push(item); 
} 

//Delete the selected checkboxes 
function deleteCheckedListNew(){ 
    var checkedBoxes = $('form input:checked').parents('fieldset'); 
    for (var i=0;i<checkedBoxes.length;i++){ 
     var str = (checkedBoxes.text().trim()); 
      str = str.split(" "); 
     var itemIndex = $.inArray(str[i],currentList); 
     if(itemIndex!==-1){ 
      currentList.splice(itemIndex,1); 
      checkedBoxes.remove(); 
     } 
    } 
} 

投入的複選框中的項目也被存儲在一個數組currentList,正是這一點我想從刪除它們。刪除checkedboxes很好。

+0

識別沒有任何意義的是獲取fieldset的文本,這正是你正在做的。添加數據屬性會更有意義(簡單修復與問題無關)。如果用戶使用2個或更多字詞,會產生什麼影響......這不會被認爲是唯一的嗎?你可以在jsfiddle.net中提供演示版 – charlietfl

+0

http://jsfiddle.net/u582wqzn/我第一次使用jsfiddle,並且我無法獲得與我的應用相同的刪除工作。我希望它能讓你更好地理解。你可以使用數據屬性來解釋嗎? –

回答

0

我不認爲你需要擔心文本的價值。

您可以簡單地使用項目的顯示索引從存儲的索引中刪除。

這是,你不會有任何排序內置尚未

假設我簡化了這個下降到

//Delete the selected checkboxes 
function deleteCheckedListNew() { 
    var checkedRows = $('fieldset').has(':checkbox:checked'); 
    checkedRows.each(function(index){ 
     currentList.splice(index, 1) 
    }).remove(); 

} 

下一步我建議是使用對象的數組爲每個項目。然後,您可以爲每個分配一個唯一的ID,這比解析文本要簡單得多。

擁有存儲的ID然後可以讓您對列表進行排序,並仍然可以使用array filter()或其他方法輕鬆找到存儲的對象。

該數組然後看起來更像

[ 
    {id:1, text:'eat lunch'}, 
    {id:2, text:'have a beer'} 
] 

的ID將隨後也被放到每一行的模板使它很容易在陣列

DEMO

+0

嗨,我認爲有一個問題,因爲它從列表中刪除了第一個選項。 http://jsfiddle.net/u582wqzn/2/ 我認爲使用多個列表可以從數組中刪除不正確的列表。 –

+0

是...我簡化了...給我幾個 – charlietfl

+0

大修...包括存儲的對象http://jsfiddle.net/u582wqzn/3/刪除主動數組後檢查控制檯 – charlietfl