在点击 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 行,你将不再需要它了。
绑定 close
和 open
以便多选添加和删除箭头中的活动 class,这会破坏您的预期行为。我建议你阅读 "What is event bubbling and capturing?"。
当您正常单击箭头或多选文本框时(所有浏览器应该具有相同的行为)事件捕获将以相同的方式工作,从多选打开然后箭头单击事件开始。
然而这段 jquery 代码 after
重新插入了元素内容,给你在 firefox 中与其他浏览器不同的体验。尝试删除该代码,看看所有浏览器会发生什么。
查看此 dojo 以查看所有浏览器都支持的更简单的实现。
我在 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 行,你将不再需要它了。
绑定 close
和 open
以便多选添加和删除箭头中的活动 class,这会破坏您的预期行为。我建议你阅读 "What is event bubbling and capturing?"。
当您正常单击箭头或多选文本框时(所有浏览器应该具有相同的行为)事件捕获将以相同的方式工作,从多选打开然后箭头单击事件开始。
然而这段 jquery 代码 after
重新插入了元素内容,给你在 firefox 中与其他浏览器不同的体验。尝试删除该代码,看看所有浏览器会发生什么。
查看此 dojo 以查看所有浏览器都支持的更简单的实现。