2013-05-28 118 views
1

我爲用戶建立了一個小應用程序來請求構建機器。我通過在提交表單時將具體信息保存到localStorage中,然後遍歷存儲變量以顯示請求的詳細外觀來實現此目的。此循環的顯示部分通過本地存儲循環,並附帶ulli輸入與每臺特定機器有關的每條信息。jQuery選擇所有的孩子

下面是我的顯示器在提交前看起來像什麼的一個粗略示例。我需要選擇每個input的值,並在localStorage.Removeitem('all machine 1 input values go here');內使用它,對於粗略的代碼我很抱歉,我對這個大部分都是新的。

<ul name="machine-1"> 
    <li><input type="button" value="Del"></li> 
    <li><input value="name1"></li> 
    <li><input value="number1"></li> 
</ul> 

<ul name="machine-2"> 
    <li><input type="button" value="Del"></li> 
    <li><input value="name2"></li> 
    <li><input value="number2"></li> 
</ul> 

繼承人我的循環部分建立列表。

$("#theRequest").append('<ul id="machine-'+ machinec +'"><li style="border:none;margin-left:0em;padding-right:0em;"><input class="delete" type="button" id="del-' 
    + machinec +'" value="Del"></li><li>' 
    + '</li><li style="border:none;margin-left:0em;padding-right:0em;"><input class="edit" type="hidden" value="Edit"></li>' 
    + '</li><li><input style="width:35px;" disabled type="text" value="' 
    + nomember + '"></li><li><input style="width:20px;" disabled type="text" value="' 
    + ecmpny + '"></li><li><input style="width:20px;" disabled type="text" value="' 
    + estore + '"></li><li><input style="width:60px;" disabled type="text" value="' 
    + hmachineType + '"></li><li><input disabled type="text" value="' 
    + efullname + '"></li><li><input disabled type="text" value="' 
    + etitle + '"></li><li><input disabled type="hidden" value="' 
    + hrequested + '"></li><li><input disabled type="hidden" value="' 
    + eemail + '</li></ul>'); 

這是我如何'刪除'特定的機器並將其清除localStorage。我基本上沒有選擇正確的,如果我是,我仍然認爲它只會選擇其中一個孫輩的價值觀?

// Delete a Machine 
$('.delete').click(function() { 
    if (confirm('Are you sure you want to remove this item?')) { 
     var parent = $(this).parents('ul'); 
     var grandchildren = parent.children().children(); 
     parent.hide(); 
     inputName = grandchildren.attr('value'); 
     localStorage.removeItem(inputName);      
    }       
    else {} 
}); 

回答

1

我會嘗試這樣的事情

// Delete a Machine 
$('.delete').click(function() { 
    if (confirm('Are you sure you want to remove this item?')) { 
     var parent = $(this).parents('ul').eq(0); // just in case you have more than one ul ancestor 
     parent.hide(); 
     parent.find('input').each(function() { 
      localStorage.removeItem($(this).attr('value')); 
     });      
    } 
}); 

順便說一句,如果你使用jQuery 1.7或更高版本,可以使用$('.delete').on("click", function() {

+0

偉大的作品,非常感謝!每個作品都很完美。 –

+0

沒問題,很高興幫助 – Klors