我有两个选择,其中包含相同的元素(选项)。 我想要做的是当用户从第一个选择框中选择一个值时,第二个选择框隐藏该选项,并且如果所选选项与第一个选择中的选项相同,则自动选择第一个可见选项。
我知道:first
选择一组"对象"中的第一个元素,:visible
只选择"可见"那些,所以我认为使用:first
的{{1}}应该可行,但我得到的是根本没有选择。
如果删除:visible
,除非第二个选择框选择了第一个元素,并且用户选择第一个选择框中的第一个元素
这是我到目前为止所记录的,请记住,我已尝试:visible
和:first
任意组合,但我认为这里的问题是"隐藏hasn&当我使用:visible
:visible
答案 0 :(得分:1)
这是一种方法
/* cache a set of options from second select*/
var $opts=$('#style_position_extra option').clone();
$('#style_position').change(function(){
var sel_pos_id = $(this).val();
/* find matching option copy*/
var $newOpts=$opts.filter(function(){
return this.value !=sel_pos_id;
}).clone();
/* replace exisiting options with match*/
$('#style_position_extra').html( $newOpts);
});
这是另一个可能更简单的
$('#style_position').change(function(){
var selected=$(this).find('option').not(':selected').clone();
$('#style_position_extra').html(selected);
});
答案 1 :(得分:0)
感谢charlietfl
我想出来,这是最终答案:
$('#style_position').change(function(){
var sel_pos_id = $(this).val();
var sel_xtr_pos_id = $('#style_position_extra').val();
var selected=$(this).find('option').not(':selected').clone();
$('#style_position_extra').html(selected)
if(sel_pos_id!=sel_xtr_pos_id){
$('#style_position_extra option[value=' + sel_xtr_pos_id + ']').attr('selected','selected');
}
});
如果两个选项具有相同的选项,则此代码将自动选择其他选项,或者在第二个选择框中选择相同的选项