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);
});