首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery一次将多个选择器推入对象中。

Jquery一次将多个选择器推入对象中。
EN

Stack Overflow用户
提问于 2014-07-06 06:07:15
回答 2查看 894关注 0票数 0

我试图一次将名称和饮食字段推入一个对象中,这样它就可以console.log出如下所示

代码语言:javascript
复制
group1: Array[some number]
    [0]: Object
        diet: "some diet"
        name: "some name"
    [1]: Object
        diet: "some other diet"
        name: "some other name"

group2: Array[some number]
    [0]: Object
        diet: "some diet"
        name: "some name"
    [1]: Object
        diet: "some other diet"
        name: "some other name"
    [2]: Object
        diet: "another diet"
        name: "another name"
    so on....

但是,我得到了一些逻辑错误,这导致了console.log如下所示:

代码语言:javascript
复制
group1: Array[some number]
    [0]: Object
        diet: undefined
        name: "some name"
    [1]: Object
        diet: undefined
        name: "some other name"

group2: Array[some number]
    [0]: Object
        diet: undefined
        name: "some name"
    [1]: Object
        diet: undefined
        name: "some other name"
    [2]: Object
        diet: undefined
        name: "another name"
    so on....

我对jquery/javascript和php还比较陌生(3周,所以不要捅我太多),而且afaics似乎没有任何问题。我怎么才能解决这个问题?

这是我的密码:

代码语言:javascript
复制
var tso = {
            group1: [],
            group2: [],
            ogroup: [],
            igroup: [],
            others: []
        };

for (var k in tso) {
    if (tso.hasOwnProperty(k)) {
        var nameField = $("input[id*="+k+"]");
        var dietField = $("select[id*="+k+"] option:selected");
        $.each($(nameField, dietField), function() {
            tso[k].push({name: $(this).closest('input').val(), diet: $(this).closest('select').val()});
        });
    }
};

console.log(tso);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-08 13:20:29

好吧,多玩一玩,找个方法来做。由于我有相同数量的输入和选择元素,所以我可以迭代哪个元素是第一位的。在我的例子中,输入总是在select元素之前,因此我可以使用.next()命令来获取下一个元素。

代码语言:javascript
复制
for (var k in tso) {
    if (tso.hasOwnProperty(k)) {
        $("input[id*="+k+"]").each(function() {
            tso[k].push({name: $(this).val(), diet: $(this).next().val()});
        });
    }
};

这个控制台出来了

代码语言:javascript
复制
group1: Array[some number]
    [0]: Object
        diet: "American"
        name: "some name"
    [1]: Object
        diet: "Western"
        name: "some other name"

group2: Array[some number]
    [0]: Object
        diet: "Asian"
        name: "some name"
    [1]: Object
        diet: "No preference"
        name: "some other name"
    [2]: Object
        diet: "Vegetarian"
        name: "another name"
so on....

如果元素不在一起,则可以使用.nextUntil(“选择器”)来选择下一个输入/选择/元素

票数 0
EN

Stack Overflow用户

发布于 2014-07-06 06:26:57

尝试按以下方式执行for

代码语言:javascript
复制
for (var k in tso) {
    if (tso.hasOwnProperty(k)) {
        var nameField = $("input[id*="+k+"]").val();
        var dietField = $("select[id*="+k+"]").val();        
        tso[k].push({name: nameField, diet: dietField });
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24593180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档