2012-08-07 101 views
0

我有一個基於用戶通過點擊功能創建特定div的web應用程序。當用戶添加一個div時,我也給他們刪除該功能的能力。每次用戶添加一個div時,它都會被推入一個數組中。然後用戶可以保存該陣列並在它們返回時加載它。Jquery/javascript:加載頁面時不需要的重複功能

刪除div的函數嵌套在函數中添加,因爲這是我發現使函數有效的唯一方法。

我的問題是,我還必須調用加載函數中的刪除功能,以使刪除按鈕在單擊添加按鈕之前工作。我試着只是調用函數的功能,但因爲沒有div開頭。因此,當頁面加載並單擊刪除按鈕時,它會執行兩次並且破壞應用程序。

我是編程新手,現在我正在做的事情大多是程序化的,所以任何輸入工作都不勝感激。我覺得我正在犯一個菜鳥的錯誤,僞代碼在下面。

$(button).cick(function(){ 
    store div in array; 
    add div to container; 
    call remove function; 
}); 
function loadPage() { 
    retrieve stored array; 
    add stored divs to container; 
    call remove function; 
} 
loadPage(); 

回答

0

您可以委派刪除操作的容器,就像這樣:

$('#container').on('click', '.delete', function() { 
    $(this).closest('div.className').remove(); 
    //here delete stored clone from array. 
}); 

調整選擇,以滿足您的HTML

那方式,任何按鈕0123',單擊時,將導致其(內部)包含div被刪除(刪除)。

  • 行動將適用於所有刪除按鈕的容器內,不管他們是否是發生在這個點擊附加處理程序,或稍後插入的時間。
  • 如果(外部)容器本身未被移除(刪除),此委託操作將保留在原位。
+0

非常感謝您的工作。 – wmurmann 2012-08-08 00:15:20

0

我覺得它更容易,如果你有單獨的按鈕來做添加和刪除。這樣你可以綁定一個按鈕來將div添加到容器中,而另一個按鈕則可以移除最後一個按下的div。

像這樣的東西可以幫助

var listOfAddedDivs = []; 

    $('.addDivButton').click(addNewDiv); 

    $('.removeDivButton').click(removeCurrentDiv); 


    function addNewDiv() { 
    listOfAddedDivs.push('<div> something </div>'); 
    updateContainer(listOfAddedDivs); 
    } 

    function removeCurrentDiv() { 
    if(listOfAddedDivs.length >0) { 
      listOfAddedDivs.pop(); 
     } 
     updateContainer(listOfAddedDivs); 
    } 

    function updateContainer(arrayContainingDivs) { 

    $('.container').html(arrayContainingDivs.join(' ')); 
    } 
+0

感謝您的重播,但我不清楚我的問題。要刪除的按鈕會在創建時自動添加到每個div。添加按鈕創建帶有刪除按鈕的div元素,該按鈕出現在div本身內。刪除功能從陣列中刪除元素本身及其存儲的克隆 – wmurmann 2012-08-07 23:55:54

相關問題