所以我知道我们可以在.on()方法上有多个事件处理程序
$(document).on({
'click': function (e) {
// function
},
'hover': function (e) {
// function
}
});
但无论如何我们可以为每个事件处理程序添加多个选择器吗?
像这样:$(document).on('click', '#foo, .foo', function () {
// function
});
但有多个.on()方法:
$(document).on({
'click', '#foo': function (e) {
// doesn't work :(
},
'hover', '.foo': function (e) {
// doesn't work :(
}
});
提前致谢
答案 0 :(得分:5)
如果您想在不同的事件上使用不同的匹配元素,则需要使用不同的on
调用。您可以使用单个on
调用来挂接相同元素的多个事件,但不能将单个on
用于事件和选择器的混合和匹配(也没有必要)。
当然,您可以创建自己的自己的功能。例如,有点像:
$.fn.mixon = function(events) {
Object.keys(events).forEach(function(selector) {
var entry = events[selector];
Object.keys(entry).forEach(function(event) {
this.on(event, selector, entry[event]);
}, this);
}, this);
return this;
};
......你可以这样使用:
$(document).mixon({
"#foo": {
"click focus": function() {
// ...
}
},
".foo": {
click: function() {
// ...
}
}
});