我有这样的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;
非常感谢任何帮助
由于
答案 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值导航无论如何
答案 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);
});