如何检测代码中的点击元素,如下所示:
HTML:
<div class="foo">
<a href=""><b>Foo</b></a>
</div>
<div class="bar">
<a href=""><b>Bar</b></a>
</div>
jQuery的:
$('body').on('click', '.foo, .bar', function (e) {
if (detectElement == '.bar') {
//
}
}
我尝试$('this')
但返回body
未点击的元素。
我也尝试e.target
,但我希望得到主要元素(.foo
或.bar
),而不是<a>
/ <b>
答案 0 :(得分:4)
$('this')
不对。 this
是包含clicked元素的变量。你不能将它用作字符串。使用.hasClass()
检查元素是否具有特定的类名。
$('body').on('click', '.foo, .bar', function (e) {
if ($(this).hasClass('bar')) {
// code
}
});
$('body').on('click', '.foo, .bar', function (e) {
if ($(this).hasClass('bar'))
console.log("is .bar");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="foo">
<a href="#"><b>Foo</b></a>
</div>
<div class="bar">
<a href="#"><b>Bar</b></a>
</div>
答案 1 :(得分:1)
您可以使用.is()
根据
selector
,元素或jQuery对象检查当前匹配的元素集,如果这些元素中至少有一个与给定的参数匹配,则返回true
。
并且选择器不正确而是使用event.currentTarget
,当您使用$('this')
时Element Selector (“element”)因为您没有this
的HTML元素,条件不起作用
事件冒泡阶段中的当前DOM元素。
$('body').on('click', '.foo, .bar', function (event) {
if ($(event.currentTarget).is('.bar')) {
//Your code
}
});
答案 2 :(得分:1)
使用currentTarget
回调的event
属性。
$('body').on('click', '.foo, .bar', function (e) {
$(e.currentTarget).hasClass('foo') {
alert('Foo has been clicked');
}
$(e.currentTarget).hasClass('bar') {
alert('Bar has been clicked');
}
});
希望这有帮助!