Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery获取父id而不是子id_Jquery - Fatal编程技术网

jquery获取父id而不是子id

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

我有以下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功能:

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