JQuery:获取被点击元素的父元素id

我有这样的div:

x

当我点击’x’时(我想运行一个名为disablePopup(id);的jquery函数disablePopup(id);其中id是相应popupDiv的id(我有很多popupDiv,每个都有它自己的X按钮)。

为了做到这一点,我实现了以下内容

 $(".popupCloseClass").click(function (event) { var buttonID = $(event.target).attr("id"); var id = $( buttonID).closest("div").attr("id"); disablePopup(id); }); 

基本上我得到了popupCloseClass的id点击然后我通过最接近的方法得到它的id(相应的popupDiv)的id。 然后我调用disablePopup。

但这不起作用。

我甚至尝试使用var buttonID = $(buttonID).parent().attr("id"); 方法,但也没有工作。

我也试过var id = this.id;

任何帮助是极大的赞赏

谢谢

而不是使用closest你可以像这样使用parent

 var id = $(this).parent().attr("id"); 

请注意,您可以使用this关键字来引用启动事件的元素。 正如您所拥有的那样,您使用buttonID的值作为元素选择器,其值为"popupDivClose"并且在开始时不添加#它将不会搜索ID,而是使用名为“popupDivClose”的标记元素。

如果你想继续使用buttonID,你可以使用这行代码来使它工作……

 var id = $("#" + buttonID).parent().attr("id"); 

但是,我宁愿写这样的整个事件……

 $(".popupCloseClass").click(function (event) { event.preventDefault(); var id = $(this).parent().attr("id"); disablePopup(id); }); 

注意event.preventDefault();的使用event.preventDefault(); 这将确保浏览器不会处理链接点击(即页面导航)的自然操作 – 但是,至少在Chrome中,您需要为导航指定href值

这是一个有效的例子

这一定必须奏效:

 $(".popupCloseClass").click(function (event) { var buttonID = $(this).parent().attr('id'); disablePopup(buttonID); }); 

你应该做

 $(".popupCloseClass").click(function (event) { var id = $(this).closest("div").attr("id"); }); 

(你也可以使用$(this).parent().attr("id"); )但是如果你改变你的html结构,使用最近的更安全

这很好用:

 $('a.popupCloseClass').click(function() { var id = $(this).parent().attr('id'); });​ 

JSFiddle演示

您应该使用this而不是获取ID的方式,然后尝试将其用作选择器(您在ID之前缺少# ):