Checkbox 未选中时,剑道ui获取复选框的id

Checkbox 未选中时,剑道ui获取复选框的id,checkbox,kendo-ui,kendo-treeview,Checkbox,Kendo Ui,Kendo Treeview,我正在使用带有复选框的剑道ui树视图 当复选框未选中时,我需要它的id 这是剑道ui地雷代码 // var homogeneous contains data $("#treeview").kendoTreeView({ checkboxes: { checkChildren: false, template:"# if(!item.hasChildren){# <input type='hidden' id='#=item.id#' parent

我正在使用带有复选框的剑道ui树视图

当复选框未选中时,我需要它的id

这是剑道ui地雷代码

// var homogeneous contains data

$("#treeview").kendoTreeView({
    checkboxes: {
        checkChildren: false,
        template:"# if(!item.hasChildren){# <input type='hidden' id='#=item.id#' parent_id='#=item.parent_id#' d_text='#=item.value#'/> <input type='checkbox' id_a='#= item.id #' name='c_#= item.id #' value='true' />#}else{# <div id='#=item.id#' style='display:none;' parent_id='#=item.parent_id#' d_text='#=item.value#'/> #}#",

    },
    dataSource: homogeneous,
    dataBound: ondata,
    dataTextField: "value"
});

function ondata() {
   //alert("databound");
}   


// function that gathers IDs of checked nodes
function checkedNodeIds(nodes, checkedNodes) {
    //console.log(nodes);
    for (var i = 0; i < nodes.length; i++) {
        if (nodes[i].checked) {
            checkedNodes.push(nodes[i].id);
        }

        if (nodes[i].hasChildren) {
            checkedNodeIds(nodes[i].children.view(), checkedNodes);
        }
    }
}

// show checked node IDs on datasource change
$("#treeview").data("kendoTreeView").dataSource.bind("change", function() {
    var checkedNodes = [],
        treeView = $("#treeview").data("kendoTreeView"),
        message;

    checkedNodeIds(treeView.dataSource.view(), checkedNodes);
    if (checkedNodes.length > 0) {
        message = "IDs of checked nodes: " + checkedNodes.join(",");
    } else {
        message = "No nodes checked.";
    }

    $("#result").html(message);
});
这段代码只在js fiddle中工作,但在我的情况下不起作用

如果我使用这个代码,那么我可以得到计数的数目,但我不知道如何使用它

    var treeview = $("[data-role=treeview]").data("kendoTreeView");
    treeview.dataSource.bind("change", function (e) {
        if (e.field == "checked") {
            console.log("Recorded Selected: " + $("[data-role=treeview] :checked").length);
        }
    });
我需要在数据源中执行哪些更改才能获取id
如果您想获得
id
,您可以:

$('input[type=checkbox]').click(function (e) {
    var li = $(e.target).closest("li");
    var id = $("input:hidden", li).attr("id");
    var node = treeView.dataSource.get(id);
    if (node.checked) {
        console.log('checked');
    } else {
        console.log('not checked');
    }
});
我在事件处理程序中所做的是:

  • 查找最近的
    li
    元素,该元素是已单击树的节点
  • id位于HTML
    input
    元素中,该元素是
    hidden
    (据我所知,您是以这种方式存储它的)
  • 使用
    dataSource.Get
    方法从
    dataSource
    获取项

  • 查看您的代码是否已修改并正在运行

    我做了一些小改动,现在可以运行了

        function ondata() {
       $('input[type=checkbox]').click(function() {
        if($(this).is(':checked')) {
           alert('checked');
        } else {
            alert('not checked');
        }
      });
    }
    
        function ondata() {
       $('input[type=checkbox]').click(function() {
        if($(this).is(':checked')) {
           alert('checked');
        } else {
            alert('not checked');
        }
      });
    }