jquery获取父id而不是子id
我有以下html代码:jquery获取父id而不是子id,jquery,Jquery,我有以下html代码: <div id="main-link-1" class="menu-option"> <div id="icon" class="menu-icon"></div> <div class="menu-text"> Overview </div> <div class="separator"></div> </div> 以及navigatorLink功能: navi
<div id="main-link-1" class="menu-option">
<div id="icon" class="menu-icon"></div>
<div class="menu-text"> Overview </div>
<div class="separator"></div>
</div>
以及navigatorLink功能:
navigatorLink : function(event){
if(event.preventDefault)
event.preventDefault();
else
event.returnValue = false;
var link = event.target;
var linkId = $(link).attr('id');
}
linkId应始终为父id:“main-link-1”
但是,当我单击子对象时,我会得到子对象id。当我单击鼠标悬停子对象时,如何仅获得父对象id事件
我知道这应该很容易,但我没有找到不改变html的方法,
提前谢谢 感谢您在问题中发布实际代码。这使得回答起来容易多了 直接的问题是,通过使用代理,您将无法跟踪默认的
this
参数,而这正是您需要使用的来查看获取调用的元素。在使用event.target
时,您将获得单击的确切元素,而不是捕获事件传播的元素。(有关此
与事件目标
之间差异的一个很好的视觉示例,请参见)
我想问题是:为什么要使用代理
?这似乎是不必要的,因为您从未在函数中使用过this
。除非您的代码有更多内容,否则我将执行以下操作:
$('.menu-option').click(this.navigatorLink);
navigatorLink : function(event){
if(event.preventDefault)
event.preventDefault();
else
event.returnValue = false;
var linkId = $(this).attr('id');
}
如果您的代码确实使用了此
,因此无法以这种方式进行更改,则可以保留旧代码并使用最接近的:
navigatorLink : function(event){
if(event.preventDefault)
event.preventDefault();
else
event.returnValue = false;
var link = event.target;
var linkId = $(link).closest(".menu-option").attr('id');
}
我想你正在寻找.parent()
函数你说的“单击鼠标悬停”是什么意思?…好吧,这一切都归结于'…'
中的内容。从声音上看,你在里面使用了一个这个。告诉我们您实际的click
函数是什么,我们可以帮助您调试它。实际上,当您应该使用此
时,它听起来像是在使用event.target
。看:这真的很有帮助。。。我使用event.target是因为我使用的是内部函数。我要编辑代码
navigatorLink : function(event){
if(event.preventDefault)
event.preventDefault();
else
event.returnValue = false;
var link = event.target;
var linkId = $(link).closest(".menu-option").attr('id');
}