jQuery - 从值数组中按值选择元素

时间:2014-10-10 14:16:37

标签: jquery

给出一些简单的JSON:

["62689", "62690", "62697"]

我需要在DOM中选择与这些值相对应的三个元素(基于value属性)。它们可以是<select><input><option>或任何其他内容。

我应该使用哪种选择器?

4 个答案:

答案 0 :(得分:3)

您可以使用jQuery的Attribute Equals Selector

  

选择具有指定属性的元素,其值完全等于某个值。

例如,要选择value62689的元素,您可以使用:

$('[value="62689"]')

要选择所有三个,您可以使用:

$('[value="62689"], [value="62690"], [value="62697"]')

如果您想对这些元素应用某些方法,并且您具有多于或少于这三个值,则可以循环执行JSON响应并相应地应用:

var data = ["62689", "62690", "62697"];

for (var i = 0; i < data.length; i++)
    $('[value="' + data[i] + '"]');

或者你可以使用jQuery's map() method将它们全部拉入数组:

var elements = $('input, select').map(function() {
    if ($.inArray(this.value, data) != -1)
        return this;
    return false;
}).get();

答案 1 :(得分:2)

你需要一个forEach循环,Attribute selectors - CSS声明你的数组

标记

<input type=text value=62689 />
<input type=text value=62690 />
<input type=text value=62697 />

脚本

var selectedArray = ["62689", "62690", "62697"];

selectedArray.forEach(function(e){
    $('[value='+e+']').hide();
});

DEMO

或者,如果你需要更多,那就像这样$('input[value='+e+'],select#hider option[value='+e+']').attr('selected', 'selected');

<input type=text value=62689 />
<input type=text value=62690 />
<input type=text value=62697 />
<select id="hider" value=626973>
    <option value=62689>Show</option>
    <option>Hide</option>
</select>

脚本

var selectedArray = ["62689", "62690", "62697"];

selectedArray.forEach(function(e){
    $('input[value='+e+'],select#hider option[value='+e+']').attr('selected', 'selected');
});

DEMO

答案 2 :(得分:1)

你可以尝试这样的事情。 :

var array = ["62689", "62690", "62697"];
$("SelectControl").filter(function() {    
    return jquery.inArray($(this).val(), array) > -1;
})

答案 3 :(得分:0)

查看jQuery selectors

对于这种情况,我会使用像

这样的东西
$('[value="' + items[0] + '"]')

items是JSON的数组结果。