2012-03-31 132 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