2011-05-21 96 views
1

我试图创建一个链接,当它在无序列表中淡入淡出时,当您单击无序列表中的列表项时,ul应该淡出。此刻我很难解决这个问题。如果任何人都可以向我解释我的错在哪里,或者有什么有用的提示,说明如何让我的代码更好,那将会很棒。单击隐藏ul的锚标签上的事件?

代码是在这里:http://jsfiddle.net/kyllle/W8AL5/


的Javascript

$(document).ready(function() { 
    $('#container li.hover').hover(function() { 
     $(this).find('ul.countries').fadeToggle(200); 
    }); 

    $('ul.countries a').click(function() { 
     $('this').find('ul.countries').fadeOut(200); 
    }); 
}); 
+0

整个'ul'应该淡出完全?或者'ul'应该淡出,将点击的'li'放在后面? – 2011-05-21 21:45:06

+0

@大卫托马斯整个UL应该淡出 – styler 2011-05-21 22:12:16

回答

4

您的代码实际上并没有那么遥远。只是几个问题:

  1. $('this')不起作用。您需要$(this)。关键字this指向被点击的元素。
  2. .find('ul.countries') - find适用于后代元素。你想要的ul是一个父元素。你想要的方法是closest
  3. 如果你希望用户留在同一个页面而不是跟随一个链接,你应该使用。

所以,在总:

$(document).ready(function() { 
    $('#container li.hover').hover(function() { 
     $(this).find('ul.countries').fadeToggle(200); 
    }); 

    $('ul.countries a').click(function(e) { 
     e.preventDefault(); 
     $(this).closest('ul.countries').fadeOut(200); 
    }); 
}); 

jsFiddle

+0

谢谢,即时通讯试图学习jQuery,只有很多方法我只是不知道哪些使用!我尝试了你的代码,当你点击一个链接时,ul会淡出,但是当你从褪色的ul区域移动鼠标时,闪烁效果开始了? – styler 2011-05-21 22:17:12

+0

@kyllle你需要添加'.stop(true,true)'。请参阅[更新](http://jsfiddle.net/W8AL5/3/)。 – lonesomeday 2011-05-21 22:39:33

+0

是啊试过,但仍然得到反复闪烁? – styler 2011-05-21 22:50:20

0

寻找的并不是这里的情况是正确的选择。它只搜索jQuery元素的后代,在这种情况下,“this”将始终是您尝试获取的ul的子元素。 see more on find

可以查询UL直接,如果你想:

$('ul.countries').fadeToggle(200); 
$('ul.countries').fadeOut(200);