使用JQuery使用select id和selected选项返回div的所有子节点

时间:2014-02-18 21:12:11

标签: jquery jquery-selectors

我想编写一个JQuery选择器,它遍历“publication”div并打印所有select标签id和所选的选项id。我怎样才能做到这一点 ?这是我的HTML代码

<div id="publication">
     <div>                        
     <div>                          
         <select class="form-control" id="2001">
            <option value="0">1 Star</option>
            <option value="1" selected >2 Stars</option>
         </select>                        
     </div>
     <div>                          
         <select class="form-control" id="2008">
            <option value="0" selected >1 Star</option>
            <option value="1">2 Stars</option>
         </select>                        
     </div>
     </div>
</div>

这是我正在寻求的理想结果。

  

[“2001”:“1”,“2008”:“0”]

找到解决方案:

var str = "";
$("#publication").find( "select" ).each(function(i,e) {
  str += '"'+$(e).attr("id") + ":" + $(this).val() + '" ,';
});    
console.log("{"+str+"}");

2 个答案:

答案 0 :(得分:1)

您可以找到所选的选项,并使用map方法获取选择的ID和数组中选项的值。

var result = $('option[selected]').map(function(i, e){
  return [[$(e).parent().attr('id'), $(e).val()]];
}).get();

结果并不完全符合您的要求,因为这不太实用。 (此外,你的例子中的语法不起作用,所以我不确定我是否理解你的确切意图。)相反,这会让你:

[["2001", "1"], ["2008", "0"]]

演示:http://jsfiddle.net/W5kDL/1/

答案 1 :(得分:0)

这应该返回您正在寻找的字符串。

var form;

form = $("#publication").find(".form-control");

var string_return;

string_return = form.attr("id");
string_return += ":"+form.children("option:selected").val();

string_return - &gt; &#34; 2001:1&#34;