Checkbox 未选中时,剑道ui获取复选框的id
我正在使用带有复选框的剑道ui树视图 当复选框未选中时,我需要它的id 这是剑道ui地雷代码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
// 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
元素,该元素是已单击树的节点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');
}
});
}