0

我有一个带有几个选择框的“类别树”。当您为要包含的项目选择类别时,它会加载子类别并将它们显示在下一个选择框中。

.submit()表单上,​​我让它.category从 DOM 中删除第一个。一旦剩下最后一个,它将name属性赋予 last .category

当页面上有多个项目表单时,就会出现扭曲。我所做的是.item使用 jQuery 遍历 s .each(),然后从那里使用 jQuery.find()查找项目中的类别。

我正在使用的 While 循环创建了一个无限循环。我曾经console.log()在脚本的整个执行过程中输出我的变量,我认为不会.find()返回我认为的内容。

html:

<div class="item">
    ....
    <div class="category"></div>
    <div class="category"></div>
    ....
</div>

javascript:

$('#transaction-form').submit(function(){
    $('.item').each(function(){
        var index = $(this).index();
        var category = $(this).find('.category');
        while (category.length > 1){
            $($(category)[0]).parent().remove();
        }
        $(category[0]).attr('name', 'form-' + index.toString() + '-category');
    });
});

category.length在 while 语句中调用返回 2,这是它应该的。我不认为的返回值.find()是一个 jQuery 对象。

4

2 回答 2

1

删除您的类别父条目实际上并没有从 Jquery 对象中删除它。所以你有一个无限循环,因为你的长度实际上从未改变......

于 2013-09-12T02:01:04.133 回答
1

尝试

$('#transaction-form').submit(function(){
    var x = $('.item').has('.category');
    x.not(x.last()).remove();
    });
});

参考

。拥有()

。最后的()

。不是()

。消除()

于 2013-09-12T02:04:34.330 回答