0

我在 IE 和 Chrome 上正确触发了一个 click 事件,但在 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 上的委托在单击事件注册的第一次被触发!我也尝试过on()bind()并且发生了同样的情况。

解释代码:

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

任何想法?

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

点击箭头进行测试!

此致

丹尼尔

4

1 回答 1

1

只需查看您的代码及其充满不必要的代码

sender.input.after($openButton);

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

绑定closeopen多选以在箭头中添加和删除活动类,这会破坏您的预期行为。我建议您阅读“什么是事件冒泡和捕获?” .

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

查看这个dojo以了解所有浏览器都支持的更简单的实现。

于 2015-05-13T03:42:35.653 回答