微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – AJAX列表更新,获取新元素和计数

我有这个HTML列表

<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] 举报,一经查实,本站将立刻删除。

相关推荐