2011-08-04 58 views
0

我制造具有这样设置索引

<select class="nace"> 
<option value="no" selected="selected">No</option> 
<option value="yes">Yes</option> 
</select> 

我想写一个jQuery代码段,这将改变类别的所有这些选择的选择不同的选择元素的形式“nace”,所以选择的价值都是一致的。但我在功能上挣扎了一下。 到目前为止,我有一个事件绑定到选择的变化,但不能完全正确。谁能帮我?

$('.nace').change(function() { 
     var selected = $(this).val(); 
     $('.nace option:selected="selected"').each(function(){ 
      $(this+' option[value='+$(this).value+']').attr('selected', 'selected'); 

     }); 
    }); 

回答

2

我就刚才这个说:

$(document).ready(function() { 
$('.nace').change(function() { 
     var selected = $(this).val(); 
     $('.nace').val(selected); 
    }); 
}); 
+0

神奇,谢谢你有这么多,我想我几乎在那里,但试图过度复杂它:) – Alistair

1

试试这个

JAVACSRIPT

$('.nace').change(function() { 
    var selected = $(this).val(); 
    $('.nace').each(function(){ 
     $(this).val(selected); 
    }); 
}); 

HTML这里

<select class="nace"> 
    <option value="no" selected="selected">No</option> 
    <option value="yes">Yes</option> 
</select> 

<select class="nace"> 
    <option value="no" selected="selected">No</option> 
    <option value="yes">Yes</option> 
</select> 

<select class="nace"> 
    <option value="no" selected="selected">No</option> 
    <option value="yes">Yes</option> 
</select> 

http://jsfiddle.net/FwYmf/

+0

+1 - 只是为了让你知道,你并不需要的“每个”。 jQuery将通过所有匹配元素。只要应用'$('。nace').val(选择)'将它们全部设置为相同的值:) –

+0

你不需要'each'。如果您只是使用'$('。nace')。val(...);' –

+0

正确,那么集合中的每个元素都会受到影响。我只是看着它,结果你不需要。每个 – LeeR

1

这应该是足够了:

var $nace = $('.nace').change(function() { 
    $nace.val($(this).val()); 
    // or (but not necessary) $nace.not(this).val($(this).val()); 
}); 

OT:如果您select场只有两种选择,可以考虑使用单选按钮。