JQuery访问Multi-Select下拉菜单

时间:2011-07-07 17:05:52

标签: jquery

我正在处理下面提到的多选下拉菜单

<select class="form-input name="hideLineItemColumns_quote" multiple="true" ">
    <option selected="true" value="part_desc">Description</option>
    <option selected="true" value="part_number">Product</option>
    <option selected="true" value="costEa_line">Cost</option>
</select>

我想要访问值&amp;所有选定选项的文本,并在进一步的逻辑中使用它们。我试过这个

var tempVar = jQuery("Select[@name='hideLineItemColumns_quote'] option:selected").text();
alert(tempVar[0]);

不显示“描述”,而是显示“D”。它将所有三个值组合在一个长字符串中。我有什么想法吗?

谢谢, Nitesh

3 个答案:

答案 0 :(得分:1)

tempVar是一个字符串。所以你正在查看该字符串中的第一个字符D

此外,您选择了所有选项。

也许这就是你的意思:

var tempVar = [];
jQuery("Select[@name='hideLineItemColumns_quote'] option:selected").each(function () {
                  tempVar.push($(this).text());
});
alert(tempVar[0]);

答案 1 :(得分:0)

您当前的查询是选择所有三个option元素。当你在这个集合上调用.text()时,jQuery假设你想要所有三个文本的组合。

如果您想单独处理它们,可以通过.each().map()进行迭代:

// with .each():
$("select[@name='hideLineItemColumns_quote'] option:selected").each(function(idx, el) {
    console.log($(el).text());
});

// with .map():
var options_arr = $("select[@name='hideLineItemColumns_quote'] option:selected").map(function(idx, el) {
    return $(el).text();
}); // => ['Description', 'Product', 'Cost']
console.log(options_arr);

http://jsfiddle.net/hans/kCZDh/1/

答案 2 :(得分:0)

我玩了一下......

var tempVar = [];
$('select[name="hideLineItemColumns_quote"] option:selected').each(function() {
    var $option = $(this);
    tempVar.push({ text: $option.text(), value: $option.attr('value') });
});
alert(tempVar[0].text);

它的基本功能,就像其他答案之一一样,是制作列表中所选项目的数组。对于每个选定的项目,它会创建一个包含textvalue属性的小对象,以便您以后可以更直观地访问它们。 (就像在alert()行中一样);