jquery clone函数嵌套删除选项

时间:2012-04-13 16:13:17

标签: jquery clone

当我克隆元素时,我的演示非常清楚 我克隆并删除了div,但是:last元素(li)不应该被删除。 我错过了什么?

与此有关!:

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

样本: http://jsfiddle.net/XeELs/86/

JQUERY     var cloneCount = 0;     $(“#add-address”)。click(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;
    }

});

2 个答案:

答案 0 :(得分:1)

使用size()方法查找有多少个地址块,这样您就可以删除它们,直到只剩下一个:

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

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

}

http://jsfiddle.net/2mby5/

答案 1 :(得分:1)

试试这段代码

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;
    }   
});