【问题标题】:select tag: first option selected by default选择标签:默认选择的第一个选项
【发布时间】:2013-05-25 16:00:06
【问题描述】:

我被这个问题困扰了将近一天......

如下所示的简单选择列表:

        <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 之后它不能正常工作,它会自动选择第一个选项,即使在 chrome 中我看到代码正在更改并且所选标签正在正确添加到其他选项。

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

我添加了这个警报,它显示即使删除了选定的属性,选项 1 仍然被选中 :(

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

【问题讨论】:

  • 请说明使用此代码$("#slide_number option[value='slide_" + _t._current_slide + "']" ).attr( 'selected','' );的逻辑。
  • 你想在change事件中得到什么/做什么?
  • 这是按值从列表中选择右侧幻灯片。当我右转时,我更改 _current_slide 编号并触发 $('#slide_number).trigger('change') 以更新列表。更改事件只是将列表中的选定属性更改为当前属性。我看到的是当我将 multiple='multiple' 添加到 select 标签时,一切正常,只是 select 本身正在更改为我不想要的列表
  • 那么,在更改时您想将_t._current_slide 设置为选中?顺便说一句,您使用的是哪个版本的 jQuery 文件?
  • 它已经设置好了,我想在选项列表中找到该幻灯片并添加 attr 选中。但我希望所有其他人都不要,并且第一张幻灯片以某种方式被选中,并且没有显示在代码中....

标签: jquery html select


【解决方案1】:

使用 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());
    });
});

【讨论】:

  • 在 jQuery 1.6 之前.attr() 方法在检索某些属性时有时会考虑属性值,这可能会导致行为不一致。 从 jQuery 1.6 开始.prop() 方法提供了一种显式检索属性值的方法,而 .attr() 检索属性。
猜你喜欢
  • 2021-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-30
  • 2017-10-31
  • 2023-02-23
相关资源
最近更新 更多