【发布时间】:2021-02-09 20:48:21
【问题描述】:
您好,我有以下下拉列表场景
每当我选择 cat1 选项时,都会填充子 cat 1 选项。但是如果我添加另一个类别 它应该只添加 cat1 选项而不是子 cat 选项。但在我的情况下,cat 1 和 sub cat 选项都已加载。以下是我克隆下拉列表的代码。
<div class="new-categories">
<div class="new-category">
<select class="category-select" name="categories">
<option></option>
<option value="1">cat 1</option>
</select>
<select class='category-select-sub' style="display:none">
<!-- loaded from ajax -->
</select>
</div></div>
<a href="#" class="add-another-cat smallest" style="">Add another category</a>
$('.add-another-cat').click(function(event){
event.preventDefault();
var $orDiv = $('.new-category:last').after($('.new-category:first').clone());
});
这才是我真正应该的样子
谢谢。
更新:填充 ajax 结果
$('div.new-categories').on('change', 'select.category-select', function () {
var $newselect = $('<select />').addClass('category-select-sub');
$(this).parent().append($newselect);
var cat_id = $(this).val();
$.ajax({
url:baseUrl+'categories/getsubcat',
data:{'id':cat_id},
dataType:'json',
async:false,
type:'POST',
success:function(data){
var subhtml = data;
$('.category-select-sub').show();
$('.category-select-sub').html(subhtml);
}
});
});
一旦添加了新的猫列表并选择了一个选项,第一个子猫就会根据新列表进行更改。如何预防?
【问题讨论】:
-
您应该保持干净状态
new-category并在页面加载时自动克隆它。然后在按下add-another-cat时再次克隆它。这样您就不会克隆修改后的new-category。 -
克隆后为什么不清空category-select-sub?
-
您的第二个问题很简单,您使用
$(".category-select-sub")而不是保留对您创建的select-sub 的引用并引用它。写作$(".category-select-sub")影响所有.category-select-sub。你应该简单地写$newselect.show().html(subhtml); -
编辑了我的答案以包含 category-select-sub 问题的解决方案。
标签: javascript jquery html ajax