Я создаю JsTree со следующей функциональностью: (ссылка JsFiddle в конце)
- Добавление динамических c новых узлов (работает отлично).
- Поместите несколько элементов управления внутри данных узла (метки, скрытые поля для использования позже) [Работает нормально]
- Некоторые элементы управления на странице для установки значений в метки и скрытые поля, которые размещаются внутри узлов [Работает нормально]
Моя проблема: Когда я добавляю текст в метки из других элементов управления, размещенных на странице (в настоящее время я использовал флажок, но на более поздней стадии будет несколько элементов управления), он работает нормально, но после этого я добавляю новый узел все данные который установлен обновляется.
Вот мой код:
<div id="html1">
<ul>
<li>
<label class="lblProduct">New</label>
</li>
</ul>
</div>
<label class="labelRadio">No Fever:</label> <div class="inputRadio"><input id="chkBx_No_Fever" type="checkbox" style="outline:none;"></div>
<button id="btnTest">Add Filter</button>
Jquery:
$('#html1').jstree(
{
"types": {
"filter": {
"icon": "glyphicon glyphicon-flash"
},
"treatment": {
"icon": "glyphicon glyphicon-ok"
}
},
"core": {
"check_callback": true,
"themes": {
"default": "large",
"dots": true
}
},
"plugins": ["wholerow", "changed", "types"]
});
var _selected_Node_Container;
var _newlyCreatedNodeId;
var _selectedNodeId;
var _parentId_Of_Selected_Node;
$("#btnTest").click(function () {
debugger;
_selectedNodeId = $('#html1').jstree('get_selected').toString();
if (_selectedNodeId.length <= 0) { abp.notify.error('Please select record to configure.'); }
else {
create_Filter_Node();
//--- Move selected node under newly created Node
$('#html1').jstree("move_node", _selectedNodeId, _newlyCreatedNodeId, 0, null, true, false);
//---- Add Another node for pass/fail condition
$("#html1").jstree('create_node', _newlyCreatedNodeId, "sub child row", 'last', function (newNode) { _newlyCreatedNodeId = newNode.id });
}
});
$('#html1').on('activate_node.jstree', function (e, data) {
_parentId_Of_Selected_Node = data.instance.get_node(data.node.parent).id;
_selectedNodeId = data.node.id;
_selected_Node_Container = $('li[id=' + _selectedNodeId + ']');
_selected_Node_Container = _selected_Node_Container.find($('a[id=' + _selectedNodeId + '_anchor]'))
});
function create_Filter_Node() {
var data="";
data += "<label name=\"lbl_No_Fever\" class=\"lbl_No_Fever\">Click This Row and then click Checkbox</label>";
data += "<label name=\"lbl_Days_On_Feed_Mode\" class=\"lbl_Days_On_Feed_Mode\"></label>";
data += "<label name=\"lbl_Days_On_Feed_Value\" class=\"lbl_Days_On_Feed_Value\"></label>";
data += "<label name=\"lbl_Temperature_Mode\" class=\"lbl_Temperature_Mode\"></label>";
data += "<label name=\"lbl_Temperature_Value\" class=\"lbl_Temperature_Value\"></label>";
data += "<label name=\"lbl_Weight_Mode\" class=\"lbl_Weight_Mode\"></label>";
data += "<label name=\"lbl_Weight_Value\" class=\"lbl_Weight_Value\"></label>";
data += "<label name=\"lbl_Animal_Type\" class=\"lbl_Animal_Type\"></label>";
data += "<label name=\"lbl_Processing_Group\" class=\"lbl_Processing_Group\"></label>";
// data += "<label name=\"lbl_Relapse\" class=\"lbl_Relapse\"></label>";
data += "<input type=\"hidden\" name=\"lbl_Relapse\" class=\"lbl_Relapse\"/>";
$("#html1").jstree('create_node', _parentId_Of_Selected_Node, data, 'first', function (newNode) { _newlyCreatedNodeId = newNode.id });
}
//------ No Filter checkbox
$("#chkBx_No_Fever").click(function () {
if ($(this).is(":checked")) {
_selected_Node_Container.find('.lbl_Relapse').val("Value From Checkbox");
_selected_Node_Container.find('.lbl_No_Fever').text("Value From Checkbox");
} else {
_selected_Node_Container.find('.lbl_Relapse').text(false);
}
});
jsFiddle
Как проверить:
- Выберите значок папки «Новая»
- Нажмите кнопку «Добавить фильтр», чтобы создать новый узел «Щелкните по этой строке, а затем установите флажок» с некоторыми дочерними узлами.
- Выберите узел с текстом «Нажмите эту строку, а затем нажмите флажок», а затем установите флажок. Это изменит текст выделенных узлов на «Значение из флажка» [Только узлы с текстом «Щелкните эту строку, а затем нажмите флажок» изменит текст при щелчке флажка.
- выберите любой узел и затем нажмите «Добавить фильтр». Теперь создается новый узел, но весь текст заменяется на «Щелкните по этой строке, а затем установите флажок»