2012-04-13 7 views
0

Meine Demo, ist wirklich klar, wenn ich klonen mein Element Ich klonen und lösche die divs aber das: letzte Element (li) sollte nicht entfernt werden. was ich vermisse?jquery klon funktion verschachtelt delete option

etwas damit zu tun !:

$(document).on("click", 'li.delete',function() { 
      $(this).closest(".outerDiv").remove(); 
    if ($(this).is(".outerDiv:last")){ 
      return false; 
    } 

DEMO: http://jsfiddle.net/XeELs/86/

JQUERY var cloneCount = 0; . $ ("# Add-Adresse") klicken (function() {

$("#to-add-address").clone() 
     .attr("id", "to-add-address_Clone" + cloneCount) 
     .insertAfter("#to-add-address"); 
    $("#clone", "#to-add-address_Clone" + cloneCount) 
     .attr("id", "clone_Clone" + cloneCount); 
    cloneCount++; 
}); 

$(document).on("click", '.options li a',function() { 
      $(this).closest(".options").find('li a').removeClass('selected'); 
      $(this).addClass('selected'); 

     }); 
$(document).on("click", 'li.delete',function() { 
      $(this).closest(".outerDiv").remove(); 
    if ($(this).is(".outerDiv:last")){ 
      return false; 
    } 

});

Antwort

1

versuchen diesen Code

var cloneCount = 0; 
$("#add-address").click(function() { 

    $("#to-add-address").clone() 
     .attr("id", "to-add-address_Clone" + cloneCount) 
     .insertAfter("#to-add-address").addClass('cloned'); //add a new class cloned to the cloned outerDivs 
    $("#clone", "#to-add-address_Clone" + cloneCount) 
     .attr("id", "clone_Clone" + cloneCount); 
    cloneCount++; 
}); 

$(document).on("click", '.options li a',function() { 
      $(this).closest(".options").find('li a').removeClass('selected'); 
      $(this).addClass('selected'); 

     }); 
$(document).on("click", 'li.delete',function() { 
      $(this).closest(".outerDiv").filter('.cloned').remove(); // and delete only the cloned ones 
    if ($(this).is(".outerDiv:last")){ 
      return false; 
    } 
}); 
1

die size() Methode verwenden, um herauszufinden, wie viele Adressblöcke gibt, diese lassen Sie sie löschen, bis nur noch einer übrig ist:

$(document).on("click", 'li.delete',function() { 

    if ($('.outerDiv').size() > 1){ 
      $(this).closest(".outerDiv").remove(); 
    } 

} 

http://jsfiddle.net/2mby5/