jQuery单击事件处理程序问题

时间:2010-07-29 16:51:11

标签: jquery

我建立了一个手风琴部分的网站,只要有人点击该网页的标题部分,点击处理程序就会放在

$('.section h2').click

但是,当用户以管理员身份登录时,会有“EDIT”链接应用于标题,因此如果单击的区域不是“a.edit-link”,我只希望该部分展开。

我尝试了$('.section h2:not(a.edit-link)').click ...或$('.section h2').not('a.edit-link').click之类的内容,但这些选项中的其他选项对我有用..

我错过了一些明显的东西吗?

2 个答案:

答案 0 :(得分:0)

您可以使用event.stopPropagation()执行此操作,如下所示:

$('.section h2').click(function() {
  //do stuff
});
$('.section h2 a.edit-link').click(function(e) { 
  e.stopPropagation();
});

当点击a.edit-link时,该点击不会冒泡到<h2>父级,并且其click处理程序不会触发。

或者,您可以检查处理程序中的事件目标,如下所示:

$('.section h2').click(function(e) {
  if($(e.target).hasClass('edit-link')) return; //bomb out
  //do stuff
});

答案 1 :(得分:0)

我个人没试过,但这是一个想法:

  • 给管理员链接他们自己的css类

  • 添加标题的点击处理程序后,为不展开该部分的编辑链接添加更具体的点击处理程序

  • 确保链接处理程序

  • 上的事件冒泡被禁止