如何使用jquery显示具有相同id的众多div中的一个?

时间:2012-04-06 00:33:22

标签: javascript jquery html css

我正在尝试使用JQuery在悬停其中一个具有共享ID的链接时显示/隐藏具有相同ID的众多div中的一个。

Markup Snippet

<div id='menuOption'>
<a href='#'><div id='cat_name'>$sub[cat_title]</div></a>
<div id='sub_menu' style='display:none;'>$itemlist</div></div>";

查询片段(我尝试过的):

$("#cat_name", this).hover(function(){
      $("#sub_menu", this).show();
});
$("#cat_name", this).mouseleave(function(){
      $("#sub_menu", this).hide();
});

我感谢任何可能帮助我解决这个问题的信息。谢谢。

2 个答案:

答案 0 :(得分:3)

HTML ID必须是唯一的。请改用使用类的html元素。

示例:http://jsfiddle.net/GPhsC/2/

HTML

<div class='menuOption'>
    <a href='#'><div class='cat_name'>$sub[cat_title]</div></a> 
    <div class='sub_menu' style='display:none;'>$itemlist</div>
</div>

的jQuery

$(".cat_name").hover(function(){
    $(this).parent().parent().find(".sub_menu").show();
},
function() {
    $(this).parent().parent().find(".sub_menu").hide();
});

答案 1 :(得分:1)

具有相同ID属性的多个元素是不正确的标记。

您应该按类属性识别元素组。

为您的例子

<div class='menuOption'> <a href='#'><div class='cat_name'>$sub[cat_title]</div></a> 
<div class='sub_menu' style='display:none;'>$itemlist</div></div>";

$(".cat_name", this).hover(function(){
       $(".sub_menu", this).show();
});
$(".cat_name", this).mouseleave(function(){
      $(".sub_menu", this).hide(); 
});