开发者

Drop Down Problems

I am trying to create a drop down list. I have it working but not fully, using this code:

$(document).ready(function(){
   $("#zone-bar li em").hover(function() {
       var hidden = $(this).parents("li").children("ul").is(":hidden");

       $("#zone-bar>ul>li>ul").hide()        
       $("#zone-bar>ul>li>a").removeClass();

       if (hidden) {
           $(this).parents("li").children("ul").toggle()
                  .parents("li").children("a").addClass("zoneCur");
       } 
   });
});

I managed to make it work so on hover the drop down list will appear, but when you move to select one of the items from the drop down list the drop down list closes. How do I fix that?

It works if I put it to onclick but then you have to click the arrow to close it again. You can开发者_运维知识库 see a live example at http://doctorwhohd.com (currently using onclick)


It is likely behaving this way because hover() is intended to take 2 functions. One for mouseenter and one for mouseleave.

When you give it only one, I think it fires the one for both events.

Instead of hover(), use mouseenter().

$("#zone-bar li em").mouseenter(function() {
   var hidden = $(this).parents("li").children("ul").is(":hidden");

   $("#zone-bar>ul>li>ul").hide()        
   $("#zone-bar>ul>li>a").removeClass();

   if (hidden) {
       $(this).parents("li").children("ul").toggle()
              .parents("li").children("a").addClass("zoneCur");
   } 
});


Try putting the hover on

  #zone-bar li  

and not on the em

Update, yes, you would need to modify the script:

$("#zone-bar li").hover(function() {
   var hidden = $(this).children("ul").is(":hidden");

   $("#zone-bar>ul>li>ul").hide()        
   $("#zone-bar>ul>li>a").removeClass();

   if (hidden) {
       $(this).children("ul").toggle()
              .children("a").addClass("zoneCur");
   } 

});

However, the suggestion of using mouseenter is probably superior, it seems that this causes momentary flicker.

You might want to consider doing this with pure CSS, there is no obvious reason to employ jquery to create this effect.

#zone-bar li{ height:1em; overflow:hidden}; 
#zone-bar li:hover{ height:auto}; 
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜