作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Primefaces 优惠 http://www.primefaces.org/showcase/ui/treeSelectionCheckbox.jsf
它非常适合,只是“单击行上的任意位置”行为不是我想要的。我需要该行的其他按钮和内容。
最佳答案
您需要为 treeTable 覆盖 Primefaces Javascript。在您的页面上放置以下内容应该会禁用 Primefaces 3.5 的此功能:
PrimeFaces.widget.TreeTable.prototype.bindSelectionEvents = function() {
var $this = this,
rowSelector = this.jqId + ' .ui-treetable-data tr.ui-treetable-selectable-node';
$(document).off('mouseover.treeTable mouseout.treeTable click.treeTable', rowSelector)
.on('mouseover.treeTable', rowSelector, null, function(e) {
var element = $(this);
if(!element.hasClass('ui-state-highlight')) {
element.addClass('ui-state-hover');
if($this.isCheckboxSelection()) {
element.find('> td:first-child > div.ui-chkbox > div.ui-chkbox-box').addClass('ui-state-hover');
}
}
})
.on('mouseout.treeTable', rowSelector, null, function(e) {
var element = $(this);
if(!element.hasClass('ui-state-highlight')) {
element.removeClass('ui-state-hover');
if($this.isCheckboxSelection()) {
element.find('> td:first-child > div.ui-chkbox > div.ui-chkbox-box').removeClass('ui-state-hover');
}
}
})
.on('click.treeTable', rowSelector, null, function(e) {
// $this.onRowClick(e, $(this)); <-- commenting this out disables row selection
e.preventDefault();
});
if(this.isCheckboxSelection()) {
var checkboxSelector = this.jqId + ' .ui-treetable-data tr.ui-treetable-selectable-node td:first-child div.ui-chkbox-box';
$(document).off('click.treeTable', checkboxSelector)
.on('click.treeTable', checkboxSelector, null, function(e) {
var node = $(this).closest('tr.ui-treetable-selectable-node');
$this.toggleCheckboxNode(node);
});
}
};
这将覆盖 TreeTable 的 bindEvents() 函数并在您单击该行时禁用选择。确保您覆盖了您正在使用的特定版本的 primefaces 的 javascript。
关于jsf-2 - 带有复选框的 Primefaces 树,在单击行上的任意位置时避免选中/取消选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22133216/
我是一名优秀的程序员,十分优秀!