2017-09-22 1 views
-1

이 JS 코드에서는 녹색 중 하나에 부모의 모든 중첩 요소를 추가하려고합니다. 'TreeView-ActiveMoveDanger'클래스를 추가하려고합니다. 불행히도 이것은 첫 번째 중첩에만 영향을 미칩니다. 즉, 트리를 추가 확장하면 'TreeView-ActiveToweDanger'클래스를 눌러 다음 요소가 추가되지 않습니다. 머리가 이해가 안 돼요, 어떻게 생각해야할지 모르겠군요.색상 선택 TreeView

TreeView Example Image

function getTreeViews(el, move) { 
 
    $('.TreeView').each(function(i, e) { 
 
      if ($(this).hasClass('TreeView-Active')) { 
 
       $(this).removeClass('TreeView-Active'); 
 
      } 
 
      if ($(this).hasClass('TreeView-ActiveMoveDanger')) { 
 
       $(this).removeClass('TreeView-ActiveMoveDanger'); 
 
      } 
 
    }); 
 
    el.addClass('TreeView-Active'); 
 

 
    if (el.attr('data-id') != 0 && !el.hasClass('TreeView-ActiveMove')) { 
 
      var parent_id = el.parent('div').attr('id').split('TreeView-Move-Block-')[1]; 
 
      if ($('#move-row-' + parent_id).hasClass('TreeView-ActiveMove')) { 
 
       el.addClass('TreeView-ActiveMoveDanger'); 
 
      } else { 
 
       var ActiveMove = $('.TreeView-ActiveMove'); 
 
       if (ActiveMove.length) { 
 
        var ActiveMoveld = ActiveMove.attr('data-id'); 
 
        if (el.parents('#TreeView-Move-Block-' + ActiveMoveld).length) { 
 
         el.addClass('TreeView-ActiveMoveDanger'); 
 
        } 
 
       } 
 
      } 
 
    } 
 
}
.TreeView { 
 
\t padding: 5px 0 5px 15px; 
 
} 
 
.TreeView:hover { 
 
\t background: #e4ebfa; 
 
} 
 
.TreeView-Active { 
 
\t background: #e4ebfa; 
 
} 
 
.TreeView-ActiveMove { 
 
\t background: #ace6ac!important; 
 
} 
 
.TreeView-ActiveMoveDanger { 
 
\t background: #f58787!important; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="col-xs-12" id="TreeView-Move-Block"> 
 
    <div class="TreeView clearfix pl-30 TreeView-ActiveMove" id="move-row-20" data-id="20" onclick="getTreeViews($(this), false)"> 
 
      Father 
 
    </div> 
 
    <div class="pl-30" id="TreeView-Move-Block-20"> 
 
     <div class="TreeView clearfix pl-30" id="move-row-17" data-id="17" onclick="getTreeViews($(this), false)"> 
 
       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Child-1 
 
     </div> 
 
     <div class="pl-30" id="TreeView-Move-Block-17"> 
 
       <div class="TreeView clearfix pl-30" id="move-row-21" data-id="21" onclick="getTreeViews($(this), false)"> 
 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Child-2 
 
       </div> 
 
     </div> 
 
    </div> 
 
    <div class="TreeView clearfix pl-30" id="move-row-22" data-id="22" onclick="getTreeViews($(this), false)"> 
 
      Sister 
 
    </div> 
 
</div>


갱신 | 나는 이상하지만 작동하지 않는 해결책을 찾았다. 수정 된 JS. 그것이 꽤 밝혀지지 않았던 것에 따라.
업데이트 | JS가 다시 한 번 수정되었습니다. 이것에서 우리는 위에 건설해야한다.
업데이트 | 이제 100 % 작동합니다.

+0

CSS 부분? 왜 jssnippet을 사용하지 않습니까? – Abra001

+0

완료. 스 니펫을 만들었 어. 일반적으로 위의 화면은 스크린 샷에 대한 링크입니다. – RAPOS

+0

css와 html의'pull-right' 클래스는 어디에 있습니까? – Abra001

답변

0

Вот мой полностью рабочий код

function getTreeViews(el, move) { 
    $('.TreeView').each(function(i, e) { 
      if ($(this).hasClass('TreeView-Active')) { 
       $(this).removeClass('TreeView-Active'); 
      } 
      if ($(this).hasClass('TreeView-ActiveMoveDanger')) { 
       $(this).removeClass('TreeView-ActiveMoveDanger'); 
      } 
    }); 
    el.addClass('TreeView-Active'); 

    if (el.attr('data-id') != 0 && !el.hasClass('TreeView-ActiveMove')) { 
      var parent_id = el.parent('div').attr('id').split('TreeView-Move-Block-')[1]; 
      if ($('#move-row-' + parent_id).hasClass('TreeView-ActiveMove')) { 
       el.addClass('TreeView-ActiveMoveDanger'); 
      } else { 
       var ActiveMove = $('.TreeView-ActiveMove'); 
       if (ActiveMove.length) { 
        var ActiveMoveld = ActiveMove.attr('data-id'); 
        if (el.parents('#TreeView-Move-Block-' + ActiveMoveld).length) { 
         el.addClass('TreeView-ActiveMoveDanger'); 
        } 
       } 
      } 
    } 
} 
+0

이것을 영어로 재구성 할 수 있습니까? – Abra001