javascript - jQuery .val() 未设置值

标签 javascript jquery html

$('.remove-member').click(function () {
    var toRemove = $(this).parent().text().slice(0, -1);
    var members = $(this).parent().siblings('input[name=group-members]').val().split(' ');
    $(this).parent().remove();
    removeElement(members, toRemove);
    members = members.join(' ');
    $(this).parent().siblings('input[name=group-members]').val(members);
});

在上面,一切都有效,直到最后一行(将值设置为 members 中包含的字符串)。在控制台中显示变量 members 会显示预期的字符串,表示 $(this).parent().siblings('input[name=group-members]')正确遍历 DOM。我的 HTML 如下:

<form method='POST' action='action.php'>
    <input type='text' value='[ GROUP NAME GOES HERE ]' name='group_name' />
    <input type='text' name='add-member' />
    <div class='group_member'>name01<span class='remove-member'>x</span>
    </div>
    <div class='group_member'>name02<span class='remove-member'>x</span>
    </div>
    <div class='group_member'>name03<span class='remove-member'>x</span>
    </div>
    <div class='group_member'>name04<span class='remove-member'>x</span>
    </div>
    <input type='text' value='name01 name02 name03 name04' name='group-members' />
    <input type='Submit' value='Update' />
</form>

由于页面的性质,直接引用 $('input[name=group-members]') 不是一个选项。

删除元素函数:

function removeElement(arr) {
    var what, a = arguments,
        L = a.length,
        ax;
    while (L > 1 && arr.length) {
        what = a[--L];
        while ((ax = arr.indexOf(what)) !== -1) {
            arr.splice(ax, 1);
        }
    }
    return arr;
}

最佳答案

$('.remove-member').click(function () {
    var toRemove = $(this).parent().text().slice(0, -1);
    var members = $(this).parent().siblings('input[name=group-members]').val().split(' ');
    $(this).parent().remove();
    removeElement(members, toRemove);
    members = members.join(' ');
    $(this).parent().siblings('input[name=group-members]').val(members);
});

您正在删除父级..

$(this).parent().remove();

所以打电话..

$(this).parent().siblings('input[name=group-members]').val(members);

不应该再工作了,因为你刚刚杀死了包含的 DOM 节点。

关于javascript - jQuery .val() 未设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28841797/

相关文章:

javascript - 表单内的 <button>

jquery - 单击按钮时弹出表单

javascript - 尝试这样做时警告框未关闭

html - 具体栏目

html - 如何仅将样式应用于父元素?

javascript - 按键事件中的 undefined variable

javascript - JavaScript 中的 `(,)` 和 `,` 是什么?

JavaScript 函数从字符串创建结构化对象?

javascript - Uncaught ReferenceError : Bind_ChainHotel is not defined

javascript - 选择后模糊()/焦点()