可以使用jQuery each()来修改选择列表中的每个项目(选项)吗?

时间:2011-07-01 23:14:37

标签: jquery

鉴于此选择列表:

<select id="my_list">
    <option value="one">One</option>
    <option value="two">Two</option>
    <option value="three">Three</option>
</select>

我想做一个jQuery迭代每个选项,并在满足我的each()语句的某个条件时将其更改为禁用。

我正在尝试这个(仅作为测试):

$('#my_list').each(function(){
    alert('test');
    if($(this).val()=='two')){
        $(this).css('background-color':'gray','padding':'10px');
    }
});

但警报从不会激发告诉我它对选项列表的值进行迭代。

3 个答案:

答案 0 :(得分:5)

第一个问题是you need a # in your selector

$('#my_list');

第二,您需要选择the option elements,而不是select

$('#my_list option')

第三个问题是无论如何都无法可靠地设置optionselect个元素。


请注意,您可以通过放置value check into the selector

来实现上述代码
$('#my_list option[value="two"]').css(...);

答案 1 :(得分:1)

这里有几件事。这与id为my_list的元素不匹配,它肯定与选项不匹配。这样做:

$("#my_list").children()

尝试使用以下内容隐藏它们:

$("#my_list").children().each(function() {$(this).wrap("<span>").hide();});

以下内容可以隐藏所有内容:

$('#my_list span').each(
    function () {
        var opt = $(this).find("option").show();
        $(this).replaceWith(opt);
    }
);

答案 2 :(得分:0)

$('my_list span').each(function(i,item){...}

从那里你可以通过i或$(this)访问增量,这是多余的,也是不必要的。