如何在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();
});