Javascript 是什么导致empty()和append()不起作用?
下面的代码段应首先删除Javascript 是什么导致empty()和append()不起作用?,javascript,jquery,asp.net-core,Javascript,Jquery,Asp.net Core,下面的代码段应首先删除SubCategoryListdiv中的所有元素。在此之后,它应该以开头,以结尾 $list.empty(); $list.append('<ul class="list-group">'); // others $list.append('</ul>'); $list.empty(); $list.append(“”); //其他 $list.append(“”); 然而,它并没有像预期的那样工作。它不清洁,也不会夹住儿童 <select
SubCategoryList
div中的所有元素。在此之后,它应该以
开头,以
结尾
$list.empty();
$list.append('<ul class="list-group">');
// others
$list.append('</ul>');
$list.empty();
$list.append(“”);
//其他
$list.append(“
”);
然而,它并没有像预期的那样工作。它不清洁,也不会夹住
儿童
<select id="ddlCategories" size="4"
asp-for="SubCategory.CategoryId"
asp-items="Model.Categories.ToSelectListItem()"
class="form-control">
<option value="">--Please Select--</option>
</select>
--请选择--
及
现有子类别:
函数updateSubCategoryList(){
var categorySelected=document.getElementById(“DDLCegories”).value;
$list=$(“#子类别列表”);
$.ajax({
url:“/Admin/SubCategory/GetSubCategory/”+已选择类别,
键入:“GET”,
数据类型:“文本”,
成功:功能(数据){
results=JSON.parse(数据);
//$list.html(“”);
$list.empty();
$list.append(“”);
对于(我在结果中){
$list.append('- '+结果[i].text+'
');
}
$list.append(“
”);
}
});
}
您的代码存在的问题是,您不能单独附加开始标记和结束标记;必须完整地创建元素
有几种方法可以解决这个问题。首先,您可以在jQuery对象中创建ul
,然后append()
li
:
success: function (data) {
results = JSON.parse(data);
$list.empty();
var $ul = $('<ul class="list-group">').appendTo($list);
for (i in results) {
$ul.append('<li class="list-group-item">' + results[i].text + '</li>');
}
}
还请注意,如果将
数据类型:“text”
更改为数据类型:“json”
,则可以取消json.parse()
调用。代码的问题在于无法单独附加开始和结束标记;必须完整地创建元素
有几种方法可以解决这个问题。首先,您可以在jQuery对象中创建ul
,然后append()
li
:
success: function (data) {
results = JSON.parse(data);
$list.empty();
var $ul = $('<ul class="list-group">').appendTo($list);
for (i in results) {
$ul.append('<li class="list-group-item">' + results[i].text + '</li>');
}
}
还请注意,如果将
数据类型:“text”
更改为数据类型:“json”
,则可以取消json.parse()
调用。在第一个版本中,不需要关闭
?@MoneyOrientedProgrammer None;jQuery就是这样工作的,没错。jQuery在创建元素时为您插入它。如果愿意,您可以自己添加$(“
”)
,$(“
”)
和$(“”)
都将完成相同的工作;在jQuery对象中创建一个ul
元素。@DaveNewton:谢谢。这是非常违反直觉的。:-)在第一个版本中,没有结账
?@MoneyOrientedProgrammer无需结账;jQuery就是这样工作的,没错。jQuery在创建元素时为您插入它。如果愿意,您可以自己添加$(“
”)
,$(“
”)
和$(“”)
都将完成相同的工作;在jQuery对象中创建一个ul
元素。@DaveNewton:谢谢。这是非常违反直觉的。:-)
success: function (data) {
results = JSON.parse(data);
$list.empty();
var $ul = $('<ul class="list-group">').appendTo($list);
for (i in results) {
$ul.append('<li class="list-group-item">' + results[i].text + '</li>');
}
}
success: function (data) {
results = JSON.parse(data);
var li = results.map(function(obj) {
return '<li class="list-group-item">' + obj.text + '</li>';
})
$list.html('<ul class="list-group">' + li + '</ul>');
}