Javascript 具有多个选择器的事件-如何获取触发选择器?
当使用多个选择器处理jQuery事件时,我可以获取触发该事件的选择器的值吗 我知道有很多类似的问题,但似乎没有一个能回答基本问题 假设我有3个按钮:Javascript 具有多个选择器的事件-如何获取触发选择器?,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,当使用多个选择器处理jQuery事件时,我可以获取触发该事件的选择器的值吗 我知道有很多类似的问题,但似乎没有一个能回答基本问题 假设我有3个按钮: <button class='red stop danger'>red</button> <button class='amber floor-it caution'>amber</button> <button class='green go safe'>green</button
<button class='red stop danger'>red</button>
<button class='amber floor-it caution'>amber</button>
<button class='green go safe'>green</button>
如果实现这一点的唯一方法是对
is()
<button class='red stop danger' id="red">red</button>
<button class='green go safe' id="green">green</button>
红色
绿色
然后:
$('#红色,#绿色')。单击(函数(){
单击计数[$(this).attr('id')]+=1;
});代码>您可以尝试以下方法:
红色
琥珀色
绿色
$('.red、.green')。单击(函数(e){
点击计数[e.target.name]+=1;
警报(“红色”+点击次数。红色);
警报(‘绿色’+点击计数。绿色)
});
如果您想要每个按钮的计数,
我个人会将其保存在数据属性中:
$('.red, .green').click(function() {
lastCount = $(this).data('clicks') || 0;
$(this).data('clicks', lastCount +1);
});
如果您想要全局红/绿计数,
我会做两个不同的处理程序:
var clickCounts = {
red: 0,
green: 0
};
$('.red').click(function() {
clickCounts.red += 1;
});
$('.green').click(function() {
clickCounts.green += 1;
});
如果你只是好奇,
很抱歉,对于如何获取jquery事件的触发选择器,我没有实际的答案;我建议您可以使用元素.matches()
和(对于较旧的浏览器)元素。匹配选择器
。例如:
$('.red, .green').click(function (e) {
var sel;
if ( e.target.matches && e.target.matches('.red') ||
e.target. matchesSelector && e.target. matchesSelector('.red')) {
sel = 'red';
} else {
sel = 'green';
}
clickCounts[sel] += 1;
});
的回调函数支持一个参数()。因此,您可以使用ev.target
精确定位元素。
var clickCounts = {
red: 0,
green: 0
};
$('.red').click(function() {
clickCounts.red += 1;
});
$('.green').click(function() {
clickCounts.green += 1;
});
$('.red, .green').click(function (e) {
var sel;
if ( e.target.matches && e.target.matches('.red') ||
e.target. matchesSelector && e.target. matchesSelector('.red')) {
sel = 'red';
} else {
sel = 'green';
}
clickCounts[sel] += 1;
});