我有这样的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); });
基本上我得到了popupCloseClass的id,然后我通过最接近的方法得到它的id(相应的popupDiv)的id.然后我调用disablePopup.
但这不起作用.
我甚至尝试使用var buttonID = $(buttonID).parent().attr(“id”);方法,但也没有工作.
我也试过var id = this.id;
任何帮助是极大的赞赏
谢谢
解决方法
而不是使用最接近你可以像这样使用父…
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值