【问题标题】:Jquery, using $.each, doesn't get the value of variableJquery,使用 $.each,没有得到变量的值
【发布时间】:2015-05-14 16:07:57
【问题描述】:

我正在使用 Jquery 向 select 添加一些选项,但是选项并不总是相同的,因此,我使用一个名为 materia 的变量来获取 previus select 的值,以了解我应该添加哪些选项。 我不知道我解释的是否正确,这里有一些代码。

...

materia = $("#selMateria").val();

...

$.each(materia, function(val,text){
    $("#selGrupo").append(new Option(text,val));
});

我之前用我可以得到的值的名称定义了变量

var name{
    opt : 'text'
}

问题是,尽管我在 var materia 上得到了正确的值,但添加选项的函数不起作用。

如果有人想查看整个代码:

INDEX.php

<div class="col-xs-6 col-centered form-group">
    <label for="facultad">Facultad</label>
    <select class="form-control" name="facultad" id="selFac" required>
        <option selected disabled hidden value="">---</option>
        <option value="ingenieria">Ingeniería</option>
        <option value="economia">Economía</option>
        <option value="derecho">Derecho</option>
    </select>
</div>
<div class="col-xs-6 col-centered form-group" id="divMateria">
    <label for="materia">Materia</label>
    <select class="form-control" name="materia" id="selMateria" required>
        <option selected disabled hidden value="">---</option>
    </select>
</div>
<div class="col-xs-12 col-centered form-group" id="divGrupo">
    <label for="grupo">Grupo</label>
    <select class="form-control" name="grupo" id="selGrupo" required>
        <option selected disabled hidden value="">---</option>
    </select>
</div>

这里是 JQUERY 函数

function addOpt(id, tipo, optDe) {
    removeAllSel(id);
    if (tipo == 'mat') {
        switch (optDe)
        {
            case 'ingenieria':
                $.each(matIng, function(val, text) {
                    $("#" + id).append(new Option(text, val));
                });
                break;
            case 'economia':
                $.each(matEco, function(val, text) {
                    $("#" + id).append(new Option(text, val));
                });
                break;
        }
    }
    else if (tipo == 'gru') {
        materia = $("#selMateria").val();
        $("#" + id).append(new Option($("#selMateria").val(), 'val'));
        $.each(materia, function(val, text) {
            $("#selGrupo").append(new Option(text, val));
        });
    }
    else {
        removeAllSel(id);
    }
}

非常感谢!

【问题讨论】:

  • 嘿,伙计,你能不能多贴一些你的代码?这还不足以帮助您。

标签: jquery select add each options


【解决方案1】:

首先:

materia = $("#selMateria").val();
$("#" + id).append(new Option($("#selMateria").val(), 'val'));
$.each(materia, function(val, text) {
    $("#selGrupo").append(new Option(text, val));
});

在这种情况下,materia 包含选择的单个值。在这种情况下,$.each 将仅迭代该单个值。我假设你想要这样的东西:

materia = $("#selMateria").val();
$("#" + id).append(new Option($("#selMateria").val(), 'val'));
$.each($("#selMateria"), function(val, text) {
    $("#selGrupo").append(new Option(text, val));
});

【讨论】:

  • 感谢您的回答。使用 $.each 我想使用与 $("#selMateria").val() 同名的变量进行迭代
  • 正如您在jQuery docs 上看到的,$.each 需要一个数组作为第一个参数。在您的实际代码中.val() 返回"",因为您的&lt;option selected disabled hidden value=""&gt;---&lt;/option&gt; 具有未定义的值。
  • 好的,我确实需要阅读更多文档,哈哈。谢谢保罗!
  • 如果您能清楚地解释您的业务逻辑,我们会尽力帮助您。你的代码应该做什么?与它交互时你希望它做什么?
猜你喜欢
  • 2016-03-19
  • 1970-01-01
  • 2014-10-04
  • 2018-12-13
  • 2012-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多