【发布时间】:2015-11-02 07:54:24
【问题描述】:
我有richfaces4树,每个节点都有复选框,现在我需要处理复选框状态
- 已选中(复选标记),
- 未选中(空),
- 部分选中(全方形)。
我需要通过 jquery 或 javascript 代码处理这些状态。每当任何复选框单击叶节点并更改父节点复选框状态时,jquery/javascript 方法都应触发。 下面是我尝试过的 jquery 代码,但它仅适用于一种情况,即检查父节点时所有子节点都处于检查状态。
$('input[type="checkbox"]').change(function(e) {
var checked = $(this).prop("checked"),
container = $(this).parent().parent().parent().parent();
container.find('input[type="checkbox"]').prop({
indeterminate: false,
checked: checked
});
JSF 代码
<rich:tree id="tree" nodeType="#{node.type}" var="node"
value="#{treeBean.rootNodes}" toggleType="client"
selectionType="ajax" toggleNodeEvent="click"
selectionChangeListener="#{treeBean.selectionChanged}">
<rich:treeNode type="country" id="country" onclick="" handleClass="even odd">
<h:selectBooleanCheckbox class="small" value="true" />
#{node.name}
</rich:treeNode>
<rich:treeNode type="company" id="company" handleClass="even odd">
<h:selectBooleanCheckbox class="small" value="true" />
#{node.name}
</rich:treeNode>
<rich:treeNode type="cd" id="cd">
<h:selectBooleanCheckbox class="small" handleClass="even odd"/>
#{node.artist} - #{node.name} - #{node.year}
</rich:treeNode>
</rich:tree>
为了处理不确定的状态,我使用下面的代码 sn-p 添加 jquery 以在输入复选框标记后添加跨度标记
$.fn.checkbox = function () {
$("input[type=checkbox]").each(function(){
if(!$(this).next().hasClass('mycheckBox')){
$(this).after("<span class=mycheckBox></span>")
}
});
}
通过 CSS,我正在处理复选框的所有三种状态的样式。
【问题讨论】:
-
写一些js代码。
-
你的问题不清楚。
标签: javascript jquery jsf richfaces