2012-08-07 56 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

相关问题