2013-05-25 235 views
1

选择,我坚持了这个问题对几乎一天一个选项...选择标签:默认情况下

简单的SELECT列表看起来像这样:

 <select id="slide_number"> 
      <option value="slide_1">Slide 1</option> 
      <option value="slide_2">Slide 2</option> 
      <option value="slide_3">Slide 3</option> 
      <option value="slide_4">Slide 4</option> 
     </select> 

而且我用这个代码,删除选定的属性,并再次将其添加到正确的选项。

$('#slide_number').change(function() { 
     $('#slide_number option:selected').removeAttr('selected'); 
     $('#slide_number :selected').each(function() { alert($(this).find('#slide_number :selected')) }); 
     $("#slide_number option[value='slide_" + _t._current_slide + "']").attr('selected',''); 
    }); 

一切都将是完美的,但幻灯片2后,不能正常工作,它autoselects第一个选项,甚至镀铬我看到的代码是改变和选择的标签被正确地添加到其他选项。

在Safari上的iPad中,我看到当我选择选项3时,它同时签署选项1和选项3,这是我认为导致该问题的原因,但我无法摆脱那种自动选择1个选项:/

我加入这个警告,它表明,即使除去所选属性后,选项1仍处于选中状态:(

感谢您的时间和想法......

+0

请解释使用此代码的逻辑'$(“#slide_number option [value ='slide_”+ _t._current_slide +'']“).attr('selected','');'。 –

+0

以及你想在'change'事件中得到/做什么? –

+0

这是按值从列表中选择正确的幻灯片。当我右转时,我改变_current_slide号码,并触发$('#slide_number).trigger('change'),以便更新列表。 更改事件只是将列表中选定的属性更改为当前的属性。 我看到的是当我将多个='多个'添加到选择标记时,一切正常,只是选择本身正在改变为我不想要的列表 – SuddenHero

回答

0

试试这个使用jQuery v1.9.1 +

$('#slide_number').change(function() { 
    $("option[value='slide_" + _t._current_slide + "']", this).prop('selected', true); 
    $(':selected', this).each(function() { 
     alert($(this).text()); 
    }); 
}); 
+1

这是什么魔法!为什么使用prop而不是attr? – SuddenHero

+0

**在jQuery 1.6 **之前,'.attr()'方法在检索某些属性时有时会考虑属性值,这可能会导致行为不一致。 **从jQuery 1.6 **开始,['.prop()'](http://api.jquery.com/prop/)方法提供了显式检索属性值的方法,而'.attr()'检索属性。 –

+1

非常感谢! – SuddenHero

相关问题