Primefaces selectManyCheckbox javascript问题

Primefaces selectManyCheckbox javascript问题,javascript,jsf,primefaces,Javascript,Jsf,Primefaces,我已经用JSF 2.2和Primefaces 4.0开发了一个应用程序,我有以下问题: 在有两列的panelGrid中,我有两个selectManyCheckbox SMC1(包含队列)和SMC2(包含用户);在用户和队列之间,我有很多关系 我想做的是,当我点击SMC1中的复选框时,在javascript的帮助下更改SMC2中相应复选框标签的背景 我正在考虑使用Ajax调用实现它,如以下场景中所示: 1.单击队列复选框; 2.向服务器发送一个带有相应queueId的Ajax调用; 3.服务器端脚

我已经用JSF 2.2和Primefaces 4.0开发了一个应用程序,我有以下问题:

在有两列的panelGrid中,我有两个selectManyCheckbox SMC1(包含队列)和SMC2(包含用户);在用户和队列之间,我有很多关系

我想做的是,当我点击SMC1中的复选框时,在javascript的帮助下更改SMC2中相应复选框标签的背景

我正在考虑使用Ajax调用实现它,如以下场景中所示: 1.单击队列复选框; 2.向服务器发送一个带有相应queueId的Ajax调用; 3.服务器端脚本获取关联的用户,并返回带有相应用户ID的JSON字符串; 4.在客户端,我有一个从服务器接收JSON的回调函数,应该突出显示相应的复选框标签

我现在的具体问题是,我不知道如何选择每个标签来改变背景,因为Primefaces生成的标签没有id

<h:form id="aUsers">
<p:panelGrid columns="2" style="width:100%; margin-bottom:10px" cellpadding="5">

<p:selectManyCheckbox onchange="submitNewCheckBoxValue([{name:'qId',value:this.value}]);" id="q" value="#{bean.qIds}" layout="grid" columns="3" converter="javax.faces.Long" converterMessage="Error."> 
    <f:selectItems  value="#{bean.qs}" 
            var="q" 
            itemValue="#{q.id}" 
            itemLabel="#{q.name}"/>
</p:selectManyCheckbox>  

<p:selectManyCheckbox id="users" value="#{bean.usIds}" layout="grid" columns="3" converter="javax.faces.Long" converterMessage="Error."> 
    <f:selectItems  value="#{bean.us}" 
            var="u"
            itemValue="#{u.id}"
            itemLabel="#{u.name}"/>  
</p:selectManyCheckbox>

</p:panelGrid>
<p:remoteCommand name="submitNewCheckBoxValue" 
                 process="@this q"
                 actionListener="#{bean.xxx()}" 
                 oncomplete="handleSaveRequest(xhr,status,args);" />
</h:form>  
我的javascrip代码是:

function handleSaveRequest(xhr, status, yourobject) { 
var f = document.getElementById('myForm');
var iLen=f.elements.length;
for (var i=0; i<iLen; i++) {
        if (f.elements[i].type == "checkbox" && f.elements[i].id.substr(0,12) == 'myForm:users') {
            //i don't know what to do next  
        }
}
}

由用户selectManycheckbox生成的一个复选框和附加标签的源代码

<td>
<div class="ui-chkbox ui-widget">
    <div class="ui-helper-hidden-accessible">
        <input id="myForm:users:0" name="myForm:users" value="3" type="checkbox">
    </div>
    <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default">
        <span class="ui-chkbox-icon ui-c"></span>
    </div>
</div>
</td>
<td>
    <label for="myForm:users:0">username</label>
</td>  

我在jquery的帮助下解决了这个问题,类似这样的

var f = document.getElementById('myForm');
var iLen=f.elements.length;
for (var i=0; i<iLen; i++) {  
    if(f.elements[i].id.substr(0,12) == 'myForm:users') {
        $(document).ready(function(){
            elemDivParent1 = $(f.elements[i]).parent("div");  
            elemDivParent0 = $(elemDivParent1).parent("div");  
            elemParentTd = $(elemDivParent0).parent("td");  
            elemSiblingTd = $(elemParentTd).next();  
            $(elemSiblingTd).addClass("light");  
    });
}

这些都包含在dataTable或其他什么东西中?不,它们不包含在任何dataTable中。为什么您的widgetVar是这样的widgetVar=menu_{rowIndex}我尝试了许多方法来解决这个问题,widgetVar就是其中之一。我想如果我这样说的话,我将为SelectManyCheckbox中的每个复选框都有一个客户端变量。但这是错误的方法,我还尝试了一个简单的名称,如widgetVar=ccc,没有结果。不,它不会为每个检查生成一个widgetVar。。到目前为止,JS代码中有哪些内容?