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

时间:2012-03-29 08:51:50

标签: jquery asp.net html parent

我有这样的div:

<div id="popupDiv1" class="popupDivClass">
    <a id="popupDivClose" class="popupCloseClass">x</a>
</div>

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

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

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

basicaly我得到了popupCloseClass的id,然后我通过最近的方法得到了它的父ID(相应的popupDiv)。然后我调用disablePopup。

但这不起作用。

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

我也试过var id = this.id;

非常感谢任何帮助

由于

4 个答案:

答案 0 :(得分:13)

而不是使用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();这将确保浏览器不会处理链接点击(即页面导航)的自然操作 - 但是,至少在Chrome中,您需要指定一个href值导航无论如何

Here is a working example

答案 1 :(得分:0)

你应该做

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

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

答案 2 :(得分:0)

这很好用:

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

<强> JSFiddle Demo

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

答案 3 :(得分:0)

这必须有效:

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