<ul id='usernameList'>
<li class='username'>John</li>
<li class='username'>Mark</li>
</ul>
和一个通过AJAX添加新名称的表单,用逗号分隔的多个添加.响应是一个包含名称的列表
[{name:David, newUser:yes}, {name:Sara, newUser:yes}, {name:Mark, newUser:no}]
我试图在列表中按字母顺序插入这些名称,如此示例http://jsfiddle.net/VQu3S/7/
这是我的AJAX提交
var form = $('#formUsername');
form.submit(function () {
$.ajax({
type: form.attr('method'),
url: form.attr('action'),
data: form.serialize(),
dataType: "json",
beforeSend: function () {
//
},
success: function (data) {
var listUsernames = $('#usernameList');
var numUsernames = listUsernames.children().length;
$.each(data, function(i, user) {
if(user.newUser == "yes"){
var htmlUser = "<li class='username'>" + user.name + "</li>";
var added = false;
$(".username", listUsernames).each(function(){
if ($(this).text() > user.name) {
$(htmlUser).insertBefore($(this));
added = true;
}
});
if(!added)
$(htmlUser).appendTo($(listUsernames));
}
// HERE I DO alert('numUsernames')
// I get the same number of users before sending form
// How can I update here the value of listUsernames and numUsernames?
});
}
});
return false;
});
我的问题是,如何在添加项目后更新listUsernames和numUsernames的值.
解决方法:
您只需要在此时更新numUsernames.
numUsernames = listUsernames.children().length;
listUsernames已经有了更新的子元素,因为它是对父元素的引用.
编辑:Re:你的评论如下:
这应该可行:
$(".username", listUsernames).each(function(){
if ($(this).text() > user.name) {
$(htmlUser).insertBefore($(this));
added = true;
return false; // stop `.each` loop.
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。