2011-12-24 26 views
1
$('h1').hover(function(){ 
    if ($('h1:contains("three")')) { 
    $(this).css({'color':'#09f'}) 
    } 

    //$('h1').text().filter('three').css('color', '#09f'); 
}) 

我很难搞清楚如何只选择包含文本的元素。现在,上面的代码会将h1的颜色变为#09f,当元素悬停时,它应该只将匹配的h1的颜色设置为#09f如果这个文本是包含在一个H1内,做一些事情只有在H1,而不是其他人

我想了解一个不同的用例。 有没有人知道只做匹配元素的最佳方法? 它会是.filter()? :包括()? 。载有()? 。是()?

回答

1

使用.is()直接:

$('h1').hover(function() { 
    if($(this).is(':contains("three")')) { 
     $(this).css('color', '#09f') 
    } 

    // $('h1').text().filter('three').css('color', '#09f'); 
}) 
+1

我读过'.contains()'spec [here](http://api.jquery.com/jQuery.contains/),它只接受DOM元素,而不是文本。你知道一个不同的'.contains()'方法吗? – jfriend00 2011-12-24 21:14:36

+0

@ jfriend00:对不起,现在更改为'.is()'。 – Ryan 2011-12-24 21:18:58

1

我想你想这样的事情只会寻找那些正在上空盘旋在H1文本“三化”只更改H1的颜色:

$('h1').hover(function(){ 
    if ($(':contains("three")', this).length) { 
    $(this).css({'color':'#09f'}) 
    } 
}) 
2

您只需在您的h1选择使用:contains

$('h1:contains("three")').hover(function() { 
    $(this).css('color', '#09f'); 
}); 

工作jsfiddle

注意:由于hover()没有提供外出处理程序,所以css颜色保持不变,但您可以使用second argument to hover()修复此问题。这是一个fiddle

相关问题