나는 JSTree
을 사용하고 AJAX를 통해이 트리를 채우고 있습니다. AJAX는 버튼 클릭 이벤트에서 작동하며 AJAX 매개 변수는 Select2
드롭 다운을 사용합니다.JS 트리가 DOM에 있는지 확인하려면
@Html.DropDownListFor(model => model.SelectedBedType, BedType, new { @class = "form-control", id = "BedType" })
<button type="button" id="btnBedType" class="btn btn-primary" onclick="CreateTree()">Show Beds</button>
<div id="divTreePanelBed" class="panel-body">
<div id="jsTreeBed">
</div>
</div>
@Html.DropDownListFor(model => model.SelectedFoodType, FoodType, new { @class = "form-control", id = "FoodType" })
<button type="button" id="btnFoodType" class="btn btn-primary" onclick="CreateTree()">Show Food</button>
<div id="divTreePanelFood" class="panel-body">
<div id="jsTreeFood">
</div>
</div>
스크립트
$('#btnBedTypeAlert').OnClick
{
//AJAX which populates the tree based on drop down selection
}
처음에게 페이지가로드, 그것은 잘 작동합니다. 드롭 다운에서 항목을 선택하고 버튼을 누르면 트리가로드됩니다. 누군가가 드롭 다운 항목을 변경하면 트리를 숨길 필요가있어서 사용자가 버튼을 클릭하게하고 새로운 AJAX 호출이있게됩니다. 나는이 나무가있을 때만이 모든 것을 숨기고 싶다. 내 문제는 트리가 DOM에 있는지 확인하는 방법입니다.
나는이 같은 페이지에 다른 나무 JSTreeFood이며, 그래서 예기치 않은 동작의 원인이됩니다 내가 .jstree 클래스 현재 수표를 사용할 수 없습니다
$('#BedType').on("change", function (e) {
if(Condition to check if there is JSTreeBed in the DOM)
{
jstree.destroy()
alert(test);
}
});
을 시도했습니다.
질문을 명확히해야합니다. 같은 페이지에 다른 트리가있는 경우 "DOM에 JSTree가 있습니까?"라는 질문을 할 수 없습니다. – Pointy
@Pointy DOM에 특정 JSTree가있는 것과 같습니다. 특정 나무를 확인해야합니다. – TheFallenOne
그런 다음 해당 특정 트리 만 포함하거나 포함하지 않는 부모 요소를 살펴보십시오. 'if ($ ('# jsTreeBed'). has ('. jstree'))'는'tree가'jsTreeBed' 엘리먼트 안에 위치한다고 가정하여 트릭을 수행합니다. – trincot