我有这个 html 代码:
<div id="menu">
<ul id="menuFuncionalidades">
<li>
<div class="menuFuncionalidades_categoria">
<a href="/sttenterprise/">Index</a></div>
</li>
<li>
<div class="menuFuncionalidades_categoria">
<a href="#">Cadastros</a></div>
<div class="menuFuncionalidades_content_links">
<div class="menuFuncionalidades_content_links_descricao">
<span class="menuFuncionalidades_content_links_descricao_titulo">Descrição</span>
<div class="menuFuncionalidades_content_links_descricao_texto">
Lorem Ipsum...
</div>
</div>
<div class="menuFuncionalidades_content_links_links">
<ul><b>Acesso Usuario</b>
<li><a href="#">Pesquisar</a> </li>
<li><a href="#">Incluir</a> </li>
<li><a href="#">Alterar</a> </li>
<li><a href="#">Consultar</a> </li>
</ul>
<ul><b>Produto</b>
<li><a href="#">Pesquisar</a> </li>
<li><a href="#">Incluir</a> </li>
</ul>
<ul><b>Perfil</b>
<li><a href="#">Pesquisar</a> </li>
<li><a href="#">Incluir</a> </li>
</ul>
</div>
</div>
</li>
<li>
<div class="menuFuncionalidades_categoria">
<a href="#">Coletores</a></div>
<div class="menuFuncionalidades_content_links">
<div class="menuFuncionalidades_content_links_descricao">
<span class="menuFuncionalidades_content_links_descricao_titulo">Descrição</span>
<div class="menuFuncionalidades_content_links_descricao_texto">
Lorem Ipsum...
</div>
</div>
<div class="menuFuncionalidades_content_links_links">
<ul>
<b>Coletor 1</b>
<li><a href="#">Pesquisar</a> </li>
<li><a href="#">Incluir</a> </li>
</ul>
<ul>
<b>Coletor 2</b>
<li><a href="#">Pesquisar</a> </li>
<li><a href="#">Incluir</a> </li>
</ul>
<ul>
<b>Coletor 3</b>
<li><a href="#">Pesquisar</a> </li>
<li><a href="#">Incluir</a> </li>
</ul>
</div>
</div>
</li>
</ul>
</div>
我的目标是当我点击 menuFuncionalidades_categoria
时,我关闭所有打开的 menuFuncionalidades_content_links
,并打开与 处于同一级别的正确链接我点击的 menuFuncialidades_categoria
。所以,我尝试了这个,但我没有成功:
$(document).ready(function () {
$('#menuFuncionalidades > li > .menuFuncionalidades_categoria').click(function () {
$("#menu").children().find('.menuFuncionalidades_content_links').each(function () {
// I need a code here to close only the tags that are opened but is not the current
if ($(this).css('display') == 'block') {
$(this).hide();
}
});
$(this).parent().find('.menuFuncionalidades_content_links').slideToggle('normal').css('width', $('#menu').css('width'));
});
});
我错过了什么或做错了什么?
OBS:我想要的行为与 Accordion 菜单类似。
最佳答案
正如@karim79 所说,您不能那样检查“显示”——它是一个 css 属性,而不是一个 html 属性。
另一方面,如果您想关闭所有其他条目,那么只需这样做 - 无需先检查它们是否可见!我还建议您对所有元素使用更高效的事件处理程序,而不是将其绑定(bind)到所有元素。使用 jQuery 1.7,这样的事情会起作用:
$(document).ready(function () {
$("#menuFuncionalidades").on("click", ".menuFuncionalidades_categoria", function(event) {
var selectedMenu = $(event.target).parents("li").find(".menuFuncionalidades_content_links")
, visible = selectedMenu.is(":visible");
// Hide all others
$("#menuFuncionalidades .menuFuncionalidades_content_links").hide();
// Show this one unless it was already visible
if(!visible) {
selectedMenu
.slideToggle('normal')
.css('width', $('#menu').css('width'));
}
// Prevent the default action
event.preventDefault();
});
});
关于javascript - 如何关闭所有用 jquery 打开的元素? (行为类似于 Accordion 菜单),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9277041/