Создать другое событие как для выбора узла, так и для удаления значка в jqtree
Ниже мой код:
var nodeData = ${jsonArray}; // my json data
$('#tree1')
.tree(
{
data : nodeData,
autoOpen : 1,
onCreateLi : function(node, $li) {
$li
.find('.jqtree-element')
.append(
'<a href="javascript:void(0);" class="delete" data-node-id="Test"><i class="ico ico-tool-delete"></i></a>');
}
});
$('#tree1').bind('tree.click', function(event) {
if (event.node) {
var node = event.node;
alert("edit");
}
$tree.on('click', '.Test', function(e) {
alert("delete");
});
});
Я хочу создать другое событие при нажатии на узел и удалить значок.
В настоящее время, когда я нажимаю на узел и удаляю значок, оба генерируют одно и то же событие.
Помогите мне, какие изменения необходимы в приведенном выше коде.
Спасибо
1 ответ
Решение
Сначала вы пытаетесь выбрать элементы с class
Тест, но этот класс не существует.
Также значок удаления находится внутри li
элементы node, поэтому вы получаете одно и то же событие.
Попробуйте добавить удаление a
элемент как это:
$('#tree1').tree({
data : nodeData,
autoOpen : 1,
onCreateLi : function(node, $li) {
$li.append(
'<a href="#" class="delete" data-node-id="Test"><i class="ico ico-tool-delete">Delete</i></a>');
}
});
проверить скрипку
Редактировать:
Вы можете сохранить идентификатор узла в качестве данных attribute
при добавлении элемента удаления. Затем, когда вы нажимаете на конкретный элемент удаления, получите нужный узел по идентификатору:
var node = $tree.tree('getNodeById', $(this).data('parent-id'));
Затем удалите этот элемент:
$tree.tree('removeNode', node);