【问题标题】:Why do I have to click a selectbox option twice in IE for it to go away?为什么我必须在 IE 中单击两次选择框选项才能让它消失?
【发布时间】:2013-10-02 18:49:01
【问题描述】:

我的页面上有一个选择框,它在除 IE 之外的所有浏览器中都运行良好。我已经在 8 和 9 上进行了测试,我也遇到了同样的问题。当我单击一个选项时, .change() 事件会触发,就像它应该的那样,但是在我再次单击之前,选项不会消失(奇怪的是 不会触发 click 事件) ,或在选择框外单击。这对我来说没问题,因为我使用的是 chrome,但我的大部分用户都使用 IE8。

这是 .change() 函数:

$('#configEquipDesc').change(function () {
            alert($(this).val());
            if ($(this).val() != 'unselected') {
                ajaxGetConfig($(this).val());
            }
        });

这是选择的 HTML。

<select name="configEquipDesc" id="configEquipDesc" data-native-menu="false" data-inline="true" class="configMenuEquip">
     <option value="unselected" data-placeholder="true">Inspection</option>
</select>

使用 ajax 添加了更多选项,并且一切都完美无缺。

【问题讨论】:

  • 您是否尝试删除警报?
  • 哈哈,是的,我将警报放入只是为了查看 .change() 事件何时触发。

标签: javascript jquery html jquery-mobile drop-down-menu


【解决方案1】:

如果这是一个动态创建的选择框,我怀疑它是,你需要使用延迟。尝试将您的 jQuery 更改为:

$('body').on('change','#configEquipDesc', function () {
    ajaxGetConfig($('option:selected', this).val());
});

看看能不能解决你的问题。

EDIT - 您正在尝试获取 selected option 的值,对吗?不是选择语句本身。所以,这里有一个小技巧,可以只抓取选定的选项并将其发送到您的 ajaxGetConfig() 函数!!

【讨论】:

  • 我现在就试试这个,但值得一提的是,它不是动态创建的选择框。选项是动态创建的,但选择框是静态的。
  • 另外,这不起作用,但感谢您的建议。我喜欢它使代码看起来的样子,所以我现在还是要保留它。
  • 新的选择器语句很棒,感谢您让我知道,但这仍然不能解决我需要单击两次的问题,哈哈
猜你喜欢
  • 2016-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-29
相关资源
最近更新 更多