在JavaScript对象中动态创建密钥
我正在尝试使用在JavaScript对象中动态创建密钥,javascript,jquery,Javascript,Jquery,我正在尝试使用jQuery选择器在JavaScript对象中动态创建一个键: { $("form").children("input[type=hidden]").attr("name"): $("form").children("input[type=hidden]").val() } 这是突破。可以用这种方式动态创建密钥吗?可以用两种语句来实现: var obj = {}; obj[$("form").children("input[type=hidden]").attr("name"
jQuery
选择器在JavaScript
对象中动态创建一个键:
{
$("form").children("input[type=hidden]").attr("name"): $("form").children("input[type=hidden]").val()
}
这是突破。可以用这种方式动态创建密钥吗?可以用两种语句来实现:
var obj = {};
obj[$("form").children("input[type=hidden]").attr("name")]
= $("form").children("input[type=hidden]").val();
我个人这样写是为了避免重新创建jQuery集:
var obj = {}, $obj = $("form").children("input[type=hidden]");
obj[$obj.attr("name")] = $obj.val();
还请注意,只有当jQuery集只包含一个元素时,这才有意义。您可以通过两条语句来完成:
var obj = {};
obj[$("form").children("input[type=hidden]").attr("name")]
= $("form").children("input[type=hidden]").val();
我个人这样写是为了避免重新创建jQuery集:
var obj = {}, $obj = $("form").children("input[type=hidden]");
obj[$obj.attr("name")] = $obj.val();
还请注意,只有当jQuery集只包含一个元素时,这才有意义。您还可以让它同时处理多个字段:
var obj = {};
$('form > input[type="hidden"]').each(function (i, el) {
obj[el.name] = el.value;
});
如果您只有一个隐藏字段,另一个更奇特的版本:
var obj = $('form > input[type="hidden"]').serializeArray()[0];
您还可以使其同时处理多个字段:
var obj = {};
$('form > input[type="hidden"]').each(function (i, el) {
obj[el.name] = el.value;
});
如果您只有一个隐藏字段,另一个更奇特的版本:
var obj = $('form > input[type="hidden"]').serializeArray()[0];
您是只有一个输入元素,还是应该对多个值起作用?只有一个隐藏的输入。我不建议使用
input[type=hidden]
选择器;如果添加另一个隐藏的输入值,可能会破坏代码。如果您给它命名会更好。您是只有一个输入元素,还是它可以用于多个值?只有一个隐藏的输入。我不建议使用input[type=hidden]
选择器;如果添加另一个隐藏的输入值,可能会破坏代码。如果你给它命名会更好。不错,但OP评论说他只有一个字段。哦,对了,我没看到。无论如何,也许有人会需要它。是的,你应该保留你的答案,这可能有用;)但请注意,您的选择器并不等同于OP给出的选择器。您可能应该添加
(假设OP有很好的理由使用子项
)。不错,但OP评论说他只有一个字段。哦,对了,我没看到。无论如何,也许有人会需要它。是的,你应该保留你的答案,这可能有用;)但请注意,您的选择器并不等同于OP给出的选择器。您可能应该添加
(假设OP有很好的理由使用子对象)。