如何根据链接的jref和jQuery通过ID获取元素?

时间:2012-03-31 19:04:04

标签: jquery dom href fadein

我正在尝试根据点击链接的href属性淡入隐藏元素,但我无法弄清楚如何,我试过这个:

http://jsfiddle.net/vengiss/Zhn2W/

但由于某种原因$(textBlock)只返回一个空对象。

提前致谢!

4 个答案:

答案 0 :(得分:1)

试试这个:

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

选择器文档可在http://docs.jquery.com/Selectors

找到

对于属性:

  

=完全相等

     

!=不相等

     

^ =以

开头      

$ =以

结尾      

* =包含

Select <a> which href ends with some string

答案 1 :(得分:1)

您目前使用的代码问题非常简单。用于查找要淡出的div的选择器是:

$(this).find('div')

但在该上下文中this指的是被点击的元素。只需将该选择器更改为:

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

它应该有用。

编辑: 关于你的包装函数我注意到的其他事情。你错过了最后的开合括号,所以你的代码都没有运行过。或者让它在文档就绪上运行,你可以在代码的最开头添加jQuery(或$)。

答案 2 :(得分: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()

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

这是此版本的working jsfiddle

答案 3 :(得分:1)

问题是您忘记在jQuery ready调用中添加第一个$。这是您需要的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