gpt4 book ai didi

javascript - 如何在鼠标悬停时打开 primefaces selectOneMenu

转载 作者:行者123 更新时间:2023-11-30 16:12:28 25 4
gpt4 key购买 nike

我已经从 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();
});

现在的问题是,当我移动鼠标选择一个选项时,菜单关闭,因为鼠标离开了下拉区域。

关于如何让它发挥作用的任何想法?

我错过了什么吗?

最佳答案

将您的选择菜单声明为

<p:selectOneMenu id="dropdownMenu" value="#{viewBean.selectedItem}" styleClass="dropdown" widgetvar="selectTest">

并使用下面的javascript

$('.dropdown').mouseenter(function(event) {
PF('selectTest').show();
});


$('.dropdown').mouseleave(function(event) {
var $target = $(event.toElement || event.relatedTarget);
if(!($target.hasClass("ui-selectonemenu-items") || $target.hasClass("ui-selectonemenu-panel"))){
PF('selectTest').hide();
}

});

$('.ui-selectonemenu-items-wrapper').mouseleave(function(event) {
PF('selectTest').hide();
});

关于javascript - 如何在鼠标悬停时打开 primefaces selectOneMenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36033074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com