2011-04-19 74 views
0

我想选择一个具有id属性的ul。它有li标签,在li标签内有锚标签。当我将鼠标移出时,我希望ul及其中的所有元素都被隐藏起来。如何使用Jquery选择一个id和一个子标签?

$('#switch-fighters-results-list').mouseout(function(){ 
    $(this).hide(); 
}); 

这里是标记

<div style="display: block;" id="switch-fighters-results" class="ajax-search-results"> 
     <ul id="switch-fighters-results-list" class="ajax-search-results-list clrFx"> 
      <li onmouseout="removeCurrent(this);" onmouseover="addCurrent(this);" class=""> 
       <a href="/fighter/scott/ferrozzo/56">Scott Ferrozzo</a> 
      </li> 
      <li onmouseout="removeCurrent(this);" onmouseover="addCurrent(this);" class=""> 
       <a href="/fighter/scott/bessac/63">Scott Bessac</a> 
      </li> 
      <li onmouseout="removeCurrent(this);" onmouseover="addCurrent(this);" class=""> 
       <a href="/fighter/scott/adams/191">Scott Adams</a> 
      </li> 
      <li onmouseout="removeCurrent(this);" onmouseover="addCurrent(this);" class=""> 
       <a href="/fighter/scott/junk/362">Scott Junk</a> 
      </li> 
      <li onmouseout="removeCurrent(this);" onmouseover="addCurrent(this);" class=""> 
       <a href="/fighter/scott/smith/376">Scott Smith</a> 
      </li> 
      <li onmouseout="removeCurrent(this);" onmouseover="addCurrent(this);" class=""> 
       <a href="/fighter/scott/baker/555">Scott Baker</a> 
      </li> 
     </ul> 
     <div id="switch-fighter-more-results"> 
      <a id="switch-fighter-more-results-link">13 more found for <span class="input-string">'scott'</span> »</a> 
     </div> 
    </div> 
+4

你可以发布你的标记 – Galen 2011-04-19 15:25:40

回答

0

您是否尝试过使用hover代替?我能够使用hover其中mouseout没有工作

Fiddle Link

$('#switch-fighters-results-list').hover(function(){},function(){ 
    $('#switch-fighters-results-list').hide(); 
}); 
0
$("#ul[id=id]").find("li").each(function(){ 
    $(this).mouseout(//do something); 
}); 
+0

这是一个黑客,因为它不直接解决问题。 – 2011-04-19 15:42:27

+1

此外,这是您如何基于属性进行选择的方式,但您应该在使用id选择时使用“#”,因为它是标准的。例如,您可以将整个选择器重写为“#myid li”,然后完成。 – 2011-04-19 15:51:30

0

从给出的信息,我会说在选择加入“立”,如果“转战士,结果列表”是id的ul:

$('#switch-fighters-results-list li').mouseout(function(){ 
    $(this).hide(); 
}); 

希望这会有所帮助。

+1

我想OP会在鼠标离开时删除整个'ul'。 – Dutchie432 2011-04-19 15:28:36

+0

正确,这也是一种破解,并没有摆脱ul。请尝试在ul上使用mouseleave。 – 2011-04-19 15:43:25

0

我不知道这是否有差别,但我在想,在propper的做法是:

$('#switch-fighters-results-list ul').mouseout(function(){ $(this).hide();}); 
0

如何用Jquery选择一个ID和一个子标签 ?

你这样做:

$('#switch-fighters-results-list li').mouseleave(function(){ 
    $(this).hide(); 
}); 

其中 “礼” 是孩子选择。注意空间:)

但是,mouseout可能不会做你期望的。

每当鼠标光标悬停在另一个元素上,或者不再有直接的“视线”到它触发的元素时,mouseover和mouseout都会触发。另一方面,mouseenter和mouseleave会在鼠标离开元素的边框时触发。尝试使用mouseleave而不是mouseout。

检查了这一点:

http://jsfiddle.net/FVPxP/3/

隐藏整个UL最简单的方法是:

该解决方案直接解决你的问题,并完成的UL在退出它的边界框时。

<ul id="switch-fighters-results-list"> 
    <li><a href="lego.com">Lego.com</a></li> 
    <li><a href="lego.com">Lego.com</a></li> 
    <li><a href="lego.com">Lego.com</a></li> 
    <li><a href="lego.com">Lego.com</a></li> 
    <li><a href="lego.com">Lego.com</a></li> 
</ul> 

$('#switch-fighters-results-list').mouseleave(function(){ 
    $(this).hide(); 
}); 

此外,您不必在输入ul时再次使所有子li都可见,所以这是最直接的方法。

相关问题