【发布时间】:2016-03-16 10:31:59
【问题描述】:
我已经从 primefaces 实现了一个 selectOneMenu,当我单击它打开时,所有的工作都正常。
<p:selectOneMenu id="dropdownMenu" value="#{viewBean.selectedItem}" styleClass="dropdown">
<p:ajax listener="#{controllerBean.onSelectedItemChanged}" />
<f:selectItem itemLabel="Item A" itemValue="A" />
<f:selectItem itemLabel="Item B" itemValue="B" />
<f:selectItem itemLabel="Item C" itemValue="C" />
</p:selectOneMenu>
但我想要的是当鼠标光标在它上面时打开它并在它离开时关闭它。
我尝试实现 mouseenter 和 mouseleave 函数并使用它们单击下拉菜单但没有成功。
$('.dropdown').mouseenter(function(event) {
console.log("IN dropdown");
$(this).click();
});
$('.dropdown').mouseleave(function(event) {
console.log("OUT dropdown");
$(this).click();
});
消息在控制台中打印,因此检测到事件,并且也检测到点击,因为我也尝试在发生这种情况时打印一些内容,但下拉菜单不会以编程方式打开。
更新
更改下拉菜单中触发器的点击事件会使其正确打开和关闭。
$('.dropdown').mouseenter(function(event) {
console.log("IN dropdown");
$('.ui-selectonemenu-trigger',this).click();
});
$('.dropdown').mouseleave(function(event) {
console.log("OUT dropdown");
$('.ui-selectonemenu-trigger',this).click();
});
现在的问题是,当我移动鼠标选择一个选项时,由于鼠标离开了下拉区域,菜单被关闭了。
关于如何让它发挥作用的任何想法?
我错过了什么吗?
【问题讨论】:
-
尝试使用 .trigger('click') 代替 click();
-
不行,
.trigger('click')也一样。
标签: javascript jquery jsf primefaces selectonemenu