2012-03-31 115 views

回答

1

您正在使用this(它指的是單擊的錨點)而不是預期的元素來查找文本塊。嘗試使用#text-blocks > div選擇來代替:

// Fade out any visible text blocks 
$('#text-blocks > div').fadeOut('normal', function() { 
    // Fade in selected text block 
    $(textBlock).fadeIn(); 
});  

這是它的一個working jsfiddle

編輯:

你也可能希望避免進出已選元素,在這種情況下使用.not() fadding:

// Fade out any visible text blocks 
$('#text-blocks > div').not(textBlock).fadeOut('normal', function() { 
    // Fade in selected text block 
    $(textBlock).fadeIn(); 
}); 

這是此版本的working jsfiddle

+0

偉大的解決了這個問題,謝謝,現在我必須弄清楚爲什麼div有時會兩次真的很快消失,任何想法?我更新了你的小提琴,以更好地反映我實際上如何使用它http://jsfiddle.net/vengiss/Zhn2W/13/ – javiervd 2012-03-31 19:22:20

+0

@ javiervd,我正在編輯反映;) – Alexander 2012-03-31 19:25:51

+0

完美的感謝! :) – javiervd 2012-03-31 19:34:02

1

試試這個:

$('a[href="ABC"]').fadeIn(); 

選擇文檔可在http://docs.jquery.com/Selectors

中找到屬性:

=正好等於

=不等於

^=是始於

$ =是

結束* =是包含

Select <a> which href ends with some string

+0

不是真的試圖淡入鏈接,但div,例如。如果我點擊鏈接href'#text1'我想淡入id爲'text1'的div。由於href已經包含了'#'符號,所以我想我可以將它傳遞給jQuery函數來選擇它:( – javiervd 2012-03-31 19:15:43

1

與您當前正在使用的代碼的問題是非常簡單的。你用找到的div淡出的選擇是:

$(this).find('div') 

但在這種情況下this是指被點擊的元素。只需將該選擇器更改爲:

$('#text-blocks').find('div') 

它應該可以工作。

編輯: 關於你的包裝功能,我注意到的其他東西。你錯過了開尾括號,所以你的代碼永遠都不會運行。或者讓它在文檔準備好的情況下運行,你可以在代碼的開頭添加jQuery(或者$)。

1

問題是您忘記在jQuery就緒調用中添加第一個$。這是你需要的JavaScript:

$(function(){ 
    $('#links a').on('click', function(e) { 
     e.preventDefault(); 

     // Fade out any visible text blocks 
     $('#text-blocks div').fadeOut(); 

     // Fade in required one 
     $($(this).attr('href')).fadeIn(); 

    });   
});​ 

jsFiddle是here