我有3个下拉列表,我想根据下拉列表的值为特定div添加一个类。
<select name="item1">
<option>Blue</option>
<option>Green</option>
<option>Red</option>
</select>
<select name="item2">
<option>Blue</option>
<option>Green</option>
<option>Red</option>
</select>
<select name="item3">
<option>Blue</option>
<option>Green</option>
<option>Red</option>
</select>
<div class="product">
<div class="item1"></div>
<div class="item2"></div>
<div class="item3"></div>
</div>
我正在尝试根据下拉列表的值添加css类。 例如,如果选择了下拉列表 item1 中的选项蓝色,我想在div 中添加一个 .blue 类ITEM1
我以前有复选框而不是下拉列表,我有这个代码:
$(document).ready(function($){
$('input#red').change(function(){
if($(this).is(":checked")) {
$('div.item1').addClass("red");
} else {
$('div.item1').removeClass("red");
}
});
$('input#blue').change(function(){
if($(this).is(":checked")) {
$('div.item1').addClass("blue");
} else {
$('div.item1').removeClass("blue");
}
});
});
我创建了这个:http://jsfiddle.net/uJcB7/14/ 应该如何正确地完成?
------------ ----------- EDIT
我正在使用重力表来生成选择框,并且他们在选项名称后添加“| 0”(我不知道为什么!)。
例如“green | 0”而不是“green”。 “| 0”隐藏在字段中,但生成的类是“绿色| 0”。
有关如何在css类中删除“| 0”的想法吗?
他们还为selectbox生成一个名称,是否可以使用类而不是使用name元素?
查看更新后的代码:
答案 0 :(得分:2)
要添加类的<div>
的类与要更改的name
元素的<select>
属性相同,要添加的类的名称是较低的选择的选项的值的案例版本。考虑到这一点,这有效:
$(document).ready(function($){
$('select').change(function(){
$('.' + this.name).attr('class', this.name + ' ' + this.value.toLowerCase());
});
});
答案 1 :(得分:1)
这是一个通用函数,它将所选选项的文本值添加到适当的div:
$(document).ready(function($){
$('select').change(function(){
var s = $(this);
var name = s.attr('name');
$('.'+name).removeClass().addClass(name+' '+s.find(':selected').text().toLowerCase());
});
});
演示:http://jsfiddle.net/jackwanders/xcEa9/4/
更一般地说,您可以使用$ .map来获取选择菜单值的列表,以便您知道要在每个更改事件中删除哪些类名称:
$('select').change(function(){
var $this = $(this);
var values = $.map($this.find('option'),function(opt){ return opt.value.toLowerCase(); }).join(' ');
$('.'+this.name).removeClass(values).addClass($(this).val().toLowerCase());
});
答案 2 :(得分:0)
$(document).ready(function() {
$('#item1').change(function() {
$('.item1').addClass($('#item1').val());
});
$('#item2').change(function() {
$('.item2').addClass($('#item2').val());
});
$('#item3').change(function() {
$('.item3').addClass($('#item3').val());
});
});
如果您愿意,也可以将各个片段保留在for循环中。
答案 3 :(得分:0)
这个适用于所有select
元素。
$('select[name^=item]').change(function(){
var val = $(this).val();
$('div.'+$(this).attr('name')).removeClass('red blue green').addClass(val);
});
select[name^=item]
搜索名称以item
答案 4 :(得分:0)
$(function() {
$('select').bind('change', function() {
var $this = $(this);
$this.find('option:not(:selected)').each(function(index, option) {
$this.removeClass($(option).text());
});
$this.addClass($this.find('option:selected').text());
});
});
答案 5 :(得分:0)
这将清除类中先前设置的颜色值(如果有)并设置新颜色值。
$(document).ready(function($){
$('select').change(function(){
name = $(this).attr('name');
curClass = $('div.'+name).attr('class');
$('div.'+name).removeClass(curClass).addClass(name + ' ' +$(this).val());
});
});
的 Fiddle Here 强>