Jsf 在onclick属性中绑定uicomponent

Jsf 在onclick属性中绑定uicomponent,jsf,jsf-2.2,Jsf,Jsf 2.2,我想在用户通过javascript单击uicomponent时切换其样式类。但是,下面的两个按钮不能同时属于“活动”类。我会在函数中直接使用id,但这是不可能的,因为按钮位于ui:repeat标记中。我知道ui:repeat中的表单是不被建议的,但我在意识到这一事实之前就做了,这不应该是我所要求的问题。因此,我没有使用id,而是尝试使用binding属性,但这似乎不起作用(我不知道这样做是否合法) 功能切换类(idUp、idDown、按钮按下){ 警报(“输入”); var classUpvo

我想在用户通过javascript单击uicomponent时切换其样式类。但是,下面的两个按钮不能同时属于“活动”类。我会在函数中直接使用id,但这是不可能的,因为按钮位于
ui:repeat
标记中。我知道
ui:repeat
中的表单是不被建议的,但我在意识到这一事实之前就做了,这不应该是我所要求的问题。因此,我没有使用id,而是尝试使用
binding
属性,但这似乎不起作用(我不知道这样做是否合法)


功能切换类(idUp、idDown、按钮按下){
警报(“输入”);
var classUpvote=document.getElementById(idUp).className;
var classDownvote=document.getElementById(idDown).className;
如果(按下按钮==“向上”){
警报(classUpvote);
}
}

至于我为什么要这么做:我有一些用户可以通过小箭头按钮向下或向上投票的主题。按下这些按钮时,按钮的颜色将从蓝色变为橙色。如果可能的话,我想使用javascript,这样按钮切换颜色就不会有延迟,我也不想刷新页面。

这太愚蠢了,我只是忘记了'',它就可以工作了。应该是:

onclick="toggleClass('#{upvoteBtn.clientId}', '#{downvoteBtn.clientId}','down')"/>
而不是

onclick="toggleClass(#{upvoteBtn.clientId}, #{downvoteBtn.clientId},'down')"/>

你在用素数脸?哪个版本? 看看你是否可以使用:

如果没有primefaces,并且手头有JQuery,那么很容易做到:

试试这个:


//DOM就绪(页面已完全加载)时调用的函数
$(函数(){
//选择id为“threads”的DIV元素。
var$threads=$('div#threads');
//DIV元素在类为“voteBtn”的所有元素上注入事件。
$threads.on('click','.voteBtn',函数(事件){
//选择触发单击事件的元素
var$clickedBtn=$(event.currentTarget);
//查找具有“form”标记名的父元素,并在其中查找具有类“voteBtn”的所有子元素,以删除“active”类。
$clickedBtn.parent('form')。find('voteBtn')。removeClass('active');
//然后,回到trigger元素,只需向其添加“active”类。
$clickedBtn.addClass('active');
});
});
或者这更好:


//DOM就绪(页面已完全加载)时调用的函数
$(函数(){
//选择表单元素。
var$form=$(“#threadsForm”);
//form元素在类为“voteBtn”的所有元素上注入事件。
$form.on('click','.voteBtn',函数(事件){
//选择触发单击事件的元素
var$clickedBtn=$(event.currentTarget);
//查找具有“group”类的父元素,并在其中查找具有“voteBtn”类的所有子元素,以删除“active”类。
$clickedBtn.parent('.group').find('.voteBtn').removeClass('active');
//然后,回到trigger元素,只需向其添加“active”类。
$clickedBtn.addClass('active');
});
});

“ui:repeat”是否呈现任何div或span?如果是,它将不起作用。

笨拙。只需在JavaScript中使用
这个
。我对js很不熟悉,但我必须链接这两个按钮,所以我不确定这是否可行。你知道handsOP上的jQuery手头有jQuery。而且,我认为只有按钮对应该被操作,而不是同一文档中的所有其他按钮。
onclick="toggleClass(#{upvoteBtn.clientId}, #{downvoteBtn.clientId},'down')"/>