2011-05-21 43 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);