JQuery:获取已单击元素的父元素id

JQuery:获取已单击元素的父元素id,jquery,asp.net,html,parent,Jquery,Asp.net,Html,Parent,我有一个这样的部门: <div id="popupDiv1" class="popupDivClass"> <a id="popupDivClose" class="popupCloseClass">x</a> </div> 基本上,我得到了单击的popupCloseClass的id,然后通过最近的方法得到了它的父类(对应的popupDiv)的id。然后我调用disablePopup 但这是行不通的 我甚至尝试使用var buttonID

我有一个这样的部门:

<div id="popupDiv1" class="popupDivClass">
    <a id="popupDivClose" class="popupCloseClass">x</a>
</div>
基本上,我得到了单击的popupCloseClass的id,然后通过最近的方法得到了它的父类(对应的popupDiv)的id。然后我调用disablePopup

但这是行不通的

我甚至尝试使用
var buttonID=$(buttonID.parent().attr(“id”)方法,但也不起作用

我还尝试了
var id=this.id

非常感谢您的帮助

谢谢

你应该这样做

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

(您也可以使用
$(this).parent().attr(“id”);
)但是如果您更改html结构,而不是使用
最接近,则使用最接近会更安全。您可以像这样使用
父级

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值

这很好用:

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

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

这必须起作用:

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

buttonID
将包含字符串
“popupDivClose”
。如果将其传递给jQuery,它将搜索标记名为
popupDivClose
的所有元素。ID选择器以
#
开头。但是由于
event.target
(或者甚至
this
)已经指向您想要的元素,只需使用
$(event.target).closest(…)…
$(this).closest(…)…
)。我建议阅读更多的jQuery教程……请注意,
parent()
将只返回直接的父级,因此选择器参数没有意义。但是,您可以使用
parents(selector)
,它将使用选择器并返回与selector@musefan是的,这是毫无意义的,根据我的经验,最好使用nexist(),因为您通常会修改html并破坏使用parent()的代码,绝对是值得考虑的。然而,我还没有打破我的代码这种方式。。。再说一次,无论如何,我不会经常使用这种功能
$(".popupCloseClass").click(function (event) 
{
    var buttonID = $(this).parent().attr('id');
    disablePopup(buttonID);
});