鉴于此选择列表:
<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');
}
});
但警报从不会激发告诉我它对选项列表的值进行迭代。
答案 0 :(得分:5)
第一个问题是you need a #
in your selector:
$('#my_list');
第二,您需要选择the option
elements,而不是select
:
$('#my_list option')
第三个问题是无论如何都无法可靠地设置option
和select
个元素。
请注意,您可以通过放置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)访问增量,这是多余的,也是不必要的。