1

我正在使用 JSF、Primefaces 和 Bootsfaces。我正在开发一个导航栏,我必须在导航栏中创建一个下拉菜单,但是我在b:dropmenu实现时遇到了问题,我使用了另一种解决方案。

我的问题是当我点击Nombre de usuario页面时如果我调用会重新加载mostrarOpcionesUsuario(),但是如果我替换mostrarOpcionesUsuario();alert('hello!');,系统会显示alert并且不会刷新页面。我需要打电话mostrarOpcionesUsuario()而不刷新页面。

这是我的代码:

XHTML:

<b:navbar>
    <b:navbarLinks>
        <b:navLink onmousedown= "mostrarOpcionesUsuario(); return false;">
        <div>
            <ul>
                <li>
                    <div>
                        <span>
                            Nombre de usuario
                        </span>
                    </div>
                    <ul class = "ulOpciones">
                        <li>Web Design</li>
                        <li>Web Development</li>
                        <li>Illustrations</li>
                    </ul>
                </li>
            </ul>
        </div>
        </b:navLink>
    </b:navbarLinks>
</b:navBar>

JavaScript:

function mostrarOpcionesUsuario() {
    $(".ulOpciones").css('visibility', function (i, v) {
        if (v == 'hidden') {
            $(".ulOpciones").css({'visibility': 'visible'});
        } else {
            $(".ulOpciones").css({'visibility': 'hidden'});
        }
    });
}

如果我输入也是同样的情况alertmostrarOpcionesUsuario()页面不会重新加载,但是使用之前的mostrarOpcionesUsuario实现,页面会重新加载。

请帮帮我!

谢谢!

4

2 回答 2

1

我找到了解决方案:

<b:navLink href="javascript:mostrarOpcionesUsuario()">
于 2016-07-18T15:14:41.350 回答
0

好吧,您自己已经回答了您的问题:BootsFaces<b:navLink>有几个不同的选项来定义单击它时会发生什么。其中之一是href属性,而该属性又允许您通过简单地调用 JavaScript 来调用javascript:.

另一个可能更直观的解决方案是使用onclick处理程序而不是onmousedown处理程序。这也有诀窍:

<b:navLink onclick="mostrarOpcionesUsuario(); return false;">
于 2016-07-18T19:54:02.807 回答