在点击 Firefox 之前触发的点击事件

Click event fired before clicked on Firefox

我在 IE 和 Chrome 上正确触发了点击事件,但在 Firefox 上没有。

我的代码:

sender.bind("open", function () {
    var $openButton = sender.wrapper.find('.k-i-arrow-s');
    $openButton.addClass('active');

    $(document).delegate($openButton, "click", function () {
        sender.close();
        sender.input.blur();
    });
});

问题是 Firefox 上的 delegate 在注册点击事件时会在第一时间触发!我也试过 on()bind() 并且发生了同样的事情。

解释代码:

它是一个 Kendo MultiSelect 控件。当它打开时,我必须向 $openButton 对象注册一个点击事件,仅此而已。

有什么想法吗?

这里是道场:http://dojo.telerik.com/eSOBo

点击箭头进行测试!

此致

丹尼尔

看看你的代码,里面全是不必要的代码

sender.input.after($openButton);

第 52、59 行你总是插入相同的内容,你已经用相同的代码将箭头放在第 46 行,你将不再需要它了。

绑定 closeopen 以便多选添加和删除箭头中的活动 class,这会破坏您的预期行为。我建议你阅读 "What is event bubbling and capturing?"

当您正常单击箭头或多选文本框时(所有浏览器应该具有相同的行为)事件捕获将以相同的方式工作,从多选打开然后箭头单击事件开始。 然而这段 jquery 代码 after 重新插入了元素内容,给你在 firefox 中与其他浏览器不同的体验。尝试删除该代码,看看所有浏览器会发生什么。

查看此 dojo 以查看所有浏览器都支持的更简单的实现。