2017-05-15 176 views
-2

在我的项目的event.target价值,我有4个格,并获得第4格值的价值,我必须做的:获取使用父元素

event.target.parentElement.parentElement.parentElement.parentElement.value 

所以,当我改变任何UI改变,那么值引用丢失,应用程序崩溃。

那么有没有其他解决方案来摆脱这种方法,并获得价值,而不考虑UI的变化。

enter image description here

为图像中,如果我需要输入文本框的值,我需要从承认在上课深入到使用event.target输入元素。

例如:

event.target.parentElement.parentElement.parentElement.parentElement 
      .parentElement.parentElement.querySelector("#Username").value 
+0

哪里是你的代码?你指的是什么事件?你正在谈论的代码插入在哪里? –

+0

event.target.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.querySelector(“#Email”)。值 例如:获取我需要使用这段代码的电子邮件的输入值...所以在未来,如果有任何新的div或任何新的元素被添加这个代码中断 –

+0

假设你有一个引发事件的元素引用(我认为你用'jQuery'标记问题时),那么您可以执行'$(this).closest('。targetElementSelector')。val();' –

回答

0

我建议你使用事件代表团采取冒泡的优势。在这种情况下,您可以使用e.delegateTarget来获取父级。

$(function() { 
 
    $('#parent').on('click', '.children', function (e) { 
 
    console.log(e.delegateTarget); 
 
    }); 
 
});
#parent { 
 
    width: 300px; 
 
    height: 300px; 
 
    background-color: black; 
 
} 
 

 
#child-1 { 
 
    width: 200px; 
 
    height: 200px; 
 
    background-color: red; 
 
} 
 

 
#child-2 { 
 
    width: 100px; 
 
    height: 100px; 
 
    background-color: green; 
 
} 
 

 
#child-3 { 
 
    width: 50px; 
 
    height: 50px; 
 
    background-color: blue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="parent"> 
 
    <div id="child-1" class="children"> 
 
    <div id="child-2" class="children"> 
 
     <div id="child-3" class="children"> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>