如何在jquery中捕获处于悬停状态时的单击事件?
我有一个水平旋转木马,其结构如下如何在jquery中捕获处于悬停状态时的单击事件?,jquery,Jquery,我有一个水平旋转木马,其结构如下 ul <li> <a> <img> <li> <a> <img> <li> <a> <img> 悬停运行良好,但现在我需要捕获悬停img上的点击事件。为此,我有下面的代码 $('ul li a img').click(function() { console.log($(thi
ul
<li>
<a>
<img>
<li>
<a>
<img>
<li>
<a>
<img>
悬停运行良好,但现在我需要捕获悬停img上的点击事件。为此,我有下面的代码
$('ul li a img').click(function() {
console.log($(this));
return true;
});
单击事件的触发数量等于旋转木马中的项目数。若有20个项目,那个么click事件将触发20次,但我只希望它为悬停的项目触发1次
谢谢您正在从单击处理程序返回
true
,这会导致事件冒泡(不完全确定原因,除非您将图像堆叠在彼此的顶部)。返回false
将使事件在处理第一次单击后停止传播
$('ul li a img').click(function() {
console.log($(this));
return false;
});
Yo还可以使用以下功能:
$('ul li a img').click(function(e) {
console.log($(this));
e.stopPropagation();
});
然后,单击事件将不会传播到其他节点。只需删除返回值,然后您可能正在循环中分配一个单击处理程序?否则,创建一个fiddle或jsbin,让我们看看您到底在做什么@user1352961这解决了我的问题,我确实在一个循环中分配了click处理程序,但这并没有解决问题。
$('ul li a img').on('click',function(e){
//your code
e.stopPropagation();
});
$('ul li a img').click(function(e) {
console.log($(this));
e.stopPropagation();
});