【问题标题】:jQuery two different delegatesjQuery 两个不同的委托
【发布时间】:2013-12-18 09:52:11
【问题描述】:

我有两个委托函数正在工作..但我希望如果点击 img 避免点击 <li>.

<li><img src='img.png'/></li>

$('#listview').delegate('li img', 'click', function(){
    alert('img clicked!');
}); 
$('#listview').delegate('li', 'click', function() { 
    window.open("details.php?id" + $(this).attr('id'), '_blank');
}); 

如果单击图像(li 内),我不想打开该页面详细信息。目前,当我单击图像时,它会发出警报并显示新页面。我怎样才能避免这种情况?

【问题讨论】:

  • 'delegate' 在 1.7 以上的 jQuery 版本中被 'on' 取代

标签: javascript jquery delegates


【解决方案1】:

尝试使用event.stopImmediatePropagation()

$('#listview').delegate('li img', 'click', function(e){
    e.stopImmediatePropagation();
    alert('img clicked!');
}); 

以防止事件在 DOM 树上冒泡。

【讨论】:

  • 为什么不使用 stopPropagation() 方法停止传播?在 OP 的情况下,我很确定两者都会起作用,但也许我在这里遗漏了一些东西,所以有什么理由吗?
  • @A.Wolff 是的,根据当前 OP 的问题,两种方法都是正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 2015-02-25
  • 1970-01-01
  • 2013-03-09
  • 2015-07-10
相关资源
最近更新 更多