2017-02-10 1 views
0

각 노드에서 onclick 이벤트를 사용하여 다중 레벨 트리를 만드는 방법을 찾고 있습니다.다단계 LI 계단식 ONCLICK 이벤트

<div id="tree"> 
    <ul id="UL1" onclick="alert('LEVEL1');"> 
     <li id="LI1"> 
     LEVEL1 
     <ul id="UL2" onclick="alert('LEVEL2');"> 
      <li id="LI2"> 
       LEVEL2 
       <ul id="UL3" onclick="alert('LEVEL3');">    
        <li id="LI3"> 
        LEVEL3 
        <ul id="UL3" onclick="alert('LEVEL4');"> 
         <li id="LI4" >LEVEL4       
        </ul>     
       </ul> 
     </ul>  
    </ul> 
</div> 

목적은 사용자가 레벨 4를 클릭하면 (예) 그는 단지 레벨 4에 대한 경고를 얻을 수 있다는 것입니다 :

나는 다음과 같은 코드가 있습니다. 문제는 경고가 캐스케이드와 나는 모든 상속 가상 에이전트 일부 특정 수준에서 클릭하면된다는 것이다 : 레벨 4에

  • 클릭을 ->
  • 클릭 LEVEL3에 레벨 4, LEVEL3, LEVEL2 및 LEVEL1에 대한 경고 - - LEVEL3, LEVEL2 및 LEVEL1
  • 등을위한> 경고 ...
난 단지 내가 대신 상위 레벨의 나머지 부분을 상속의 클릭 해당 레벨에 경고를 찾고 있어요

...

달성하기 쉬운 방법이 있습니까?

감사합니다.

답변

2

인라인 대신 눈에 거슬리는 코드로 이벤트 위임을 사용하십시오.

부모 요소에 eventlistener을 첨부하고 event 개체의 target을 사용하여 이벤트를 트리거 한 요소를 식별하십시오. 예를 들어

:

// Your parent element 
 
var div = document.getElementById("tree"); 
 

 
// Attach the eventlistener to the parent element 
 
div.addEventListener('click', dosomething); 
 

 
// Use the target from the event object that is passed to the handler 
 
function dosomething(e) { 
 
\t console.log("You clicked " + e.target.id); 
 
}
<div id="tree"> 
 
    <ul id="UL1" > 
 
     <li id="LI1"> 
 
     LEVEL1 
 
     <ul id="UL2" > 
 
      <li id="LI2"> 
 
       LEVEL2 
 
       <ul id="UL3" >    
 
        <li id="LI3"> 
 
        LEVEL3 
 
        <ul id="UL3" > 
 
         <li id="LI4" >LEVEL4       
 
        </ul>     
 
       </ul> 
 
     </ul>  
 
    </ul> 
 
</div>

+0

안녕 Abhi, 감사합니다! 그게 내가 찾고 있던거야. 문제는 이제 julery 라이브러리 (fancytree)를 사용하여 ul/li 구조를 멋진 트리보기로 변환 할 수 있다는 것입니다. 라이브러리는 모든 UL에 대해 디스플레이 속성을 NONE으로 설정 한 다음 나는 이벤트 처리를 잃고있는 곳이라고 생각합니다 ... display 속성이 none으로 설정된 경우 아무 것도 표시되지 않습니다 ... 부모 요소를 diplay : none으로 갖는 것과 이벤트를 할당하는 것 사이에는 어떤 관련이 있습니까? –

+0

@ byle.05 문제가 아니어야합니다. 재현 가능한 최소한의 예제로 새로운 질문을 할 수 있습니다. 도움이 될 것입니다. – Abhitalks

+1

감사합니다. Abhi, 나는 마침내 그것을 분류 할 수있었습니다. 문제는 멋진 트리 라이브러리가 내 UL/LI 구조를 자체 구조로 바꾸고 내 ID를 잃어버린 것입니다. 나는이 ID를 상속하도록 라이브러리를 약간 수정했으며 이제는 완벽하게 작동한다. :) –