【问题标题】:Refreshing a select box onClick ( IE8 Issue )在单击时刷新选择框(IE8 问题)
【发布时间】:2013-08-09 13:01:41
【问题描述】:

我正在触发单击事件以在单击选择框时刷新其选项。它在 FF/Chrome 中运行良好,但在 IE 中我得到了一些奇怪的行为。单击时,选择框会快速打开和关闭。

这是代码示例

$(document).ready( function() {

   $(".mySelect").click( function() {
     updateOptions();
   });

});

function updateOptions() {
    var myNewOptions = "<option value='1'>Foo</option>";
    $(".mySelect").empty().append(myNewOptions);
}

<select class="mySelect"></select>

【问题讨论】:

  • 我怀疑你想要 click 事件 - 也许你正在寻找使用 focus 事件?
  • 我想在用户单击选择框时刷新可用选项。
  • 是的,当我单击一个时,我什至无法注册click 事件。尝试使用focus 事件……这对我来说更有意义。当你点击它时它会触发(它还没有被聚焦)

标签: javascript jquery internet-explorer-8


【解决方案1】:

试试

$(".mySelect").click( function(e) {
    e.preventDefault();
    updateOptions();
});

看起来您的点击事件触发了两次。

【讨论】:

  • 有趣,我只是在尝试-但仍然没有骰子:(-如果有帮助-我在同一个选择框上也有一个更改事件。我不明白为什么这很重要,但我想我会指出来。
  • 仅供参考,这个错误在 IE8 中,不支持 preventDefault。我也尝试在我的函数中返回 false。
  • 啊是的 IE8 没有preventDefault。试试e.returnValue = false;
  • @JasonWells 在 jQuery 处理程序中,preventDefault() 并不代表您所期望的。 e 指的是 jQuery 为您制作的自定义 Event 对象,以标准化的方式保存您需要了解的有关原始事件的所有信息。 e.preventDefault() 这是防止默认行为的规范化方法,因此它在所有浏览器中都“受支持”(这是 jQuery 的重点 - 浏览器一致性/支持)。您不需要像这样尝试修复浏览器的不一致问题
【解决方案2】:

试试这个:

   $(document).on('click','.mySelect', function(){
      updateOptions();
   })

Fiddle

【讨论】:

    猜你喜欢
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 2022-01-20
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 2014-01-06
    相关资源
    最近更新 更多