当元素在另一个元素中时,我遇到了jQuery click事件的问题。我使用的代码类似于以下内容:
<div class="a" id="a">
<a class="b" id="b"></a>
</div>
$(".a,.b").click(function() {
var current_id = $(this).attr("id");
alert(current_id);
...do something...
});
当我点击标签class =“b”时,它返回封装的class =“a”id,而不是class =“b”的id。我如何对其进行编码,以便当我点击class =“a”或class =“b”时,它会返回正确的相应id值?
答案 0 :(得分:5)
你必须阻止它冒泡。
$(".a,.b").click(function() {
var current_id = $(this).attr("id");
alert(current_id);
// ...do something...
return false; // <-- stop propagation
});
编辑:更好的方式
$(".a,.b").click(function(event) {
var current_id = event.target.id;
alert(current_id);
// ...do something...
event.stopPropagation();
});
答案 1 :(得分:3)
您需要使用event target。这是事件发生的元素:
$(".a").click(function(event) {
var current_id = event.target.id;
alert(current_id);
...do something...
});
请注意,这与$(event.target).attr('id')
相同,但更清晰,更快,并且我已移除对.b
的引用,因为在.b
上触发的所有事件都将在.a
上匹配{1}}无论如何。
答案 2 :(得分:0)
您还可以创建此类事件
$(document).on('click','#a>.b',function(){
var current_id = $(this).attr("id");
alert(current_id);
});