Jquery找到匹配数组的ID

时间:2015-12-13 07:59:24

标签: jquery arrays

好的我正在使用map.get()在Array

中存储选择选项值
myArray = $("option:selected").map(function(){ return this.value }).get().join(" ");  

我有一些div的ID与存储在Array

中的select选项值相同
myArray = [ one two three ];

我想将[一二三]作为类应用到div.box并找到ID与myArray相同的Div [div#one div#two div#three]并获取所有输入:选中。

 <div id="one">   inputs with :checked </div>
 <div id="two">   inputs with :checked </div>
 <div id="three"> inputs with :checked </div>
 <div id="four">  inputs with :checked </div> 

如何获取:仅使用ID [一两三]来检查来自Div的项目。

我不确定如何找到匹配每个数组元素的ID,感谢您的帮助,并提前感谢:)

var selectedOptions = $(".select-field option:selected").map(function() {
  return this.value
}).get().join(" ");


//add selected option value as CLASS to .box
$('.box').addClass(selectedOptions);


// check if selected option stored in array match any div ID and get it's checked values

$.each(selectedOptions, function(index, value) {
  $('#' + value + ' input:checked').each(function() {
    var checked = $(this);
  });
});


//result

$("p.select").append(selectedOptions);
$("p.checked").append(checked);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select class="select-field">
  <option value="one">option one</option>
  <option value="two">option two</option>
  <option value="three">option three</option>
</select>

<select class="select-field">
  <option value="four">option four</option>
  <option value="five">option five</option>
  <option value="six">option six</option>
</select>


<div id="one">
  <p>Option one</p>
  <fieldset>
    <input type="radio" name="div1" value="left">
    <label for="left">Left</label>
    <input type="radio" name="div1" value="right" checked>
    <label for="right">Right</label>
  </fieldset>
</div>

<div id="two">
  <p>Option two</p>
  <fieldset>
    <input type="radio" name="div2" value="left" checked>
    <label for="left">Left</label>
    <input type="radio" name="div2" value="center">
    <label for="center">Center</label>
  </fieldset>
</div>

<div id="three">
  <p>Option three</p>
  <fieldset>
    <input type="radio" name="div3" value="right">
    <label for="right">Right</label>
    <input type="radio" name="div3" value="center" checked>
    <label for="center">Center</label>
  </fieldset>
</div>

<div id="four">
  <p>Option four</p>
  <fieldset>
    <input type="radio" name="div4" value="right">
    <label for="right">Right</label>
    <input type="radio" name="div4" value="center" checked>
    <label for="center">Center</label>
  </fieldset>
</div>

<div id="five">
  <p>Option five</p>
  <fieldset>
    <input type="radio" name="div5" value="left">
    <label for="left">Left</label>
    <input type="radio" name="div5" value="center" checked>
    <label for="center">Center</label>
  </fieldset>
</div>

<br />

<h4>Results</h4>
<div style="border:2px solid" class="box">Add "option one" and "option two" value as Class to this div .box example class="one four"</div>

<p class="select">Selected Options are :</p>

<p class="checked">Checked Options are :</p>

3 个答案:

答案 0 :(得分:1)

你必须使用每个遍历数组,然后你必须找到选中的值。

cpan

install Digest::MD5

此示例可能对您有所帮助。

答案 1 :(得分:0)

尝试这个来创建数组

 $.each(myArray, function( index, value ) {
     $('#'+value+' input:checked').each(function() {
         console.log($(this));
     });
 });

然后使用

var myArray = [];
$("option:selected").each(function(){
    var ThisIt = $(this);
    myArray.push($.trim(ThisIt.val()));
});

答案 2 :(得分:0)

由于您在返回的数组中使用了.join(),因此已将其转换为字符串。我建议你不要.join(" ")空间。

相反,你可以返回一个附加#附加值的字符串,只返回.join("')没有空格的字符串,它会输出一个逗号分隔的哈希标记值字符串。

你可以这样做:

var myArray = $("option:selected").map(function(){ 
    return '#'+this.value; 
}).get().join(","); 
// would output #one, #two, #three

现在您可以创建var myArray的选择器:

$(myArray).each(function (){
    var val = $(this).find(':ckecked').val();
    console.log(val);
});