如果此文本包含在H1中,则只对h1执行某些操作,而不是其他操作

时间:2011-12-24 21:09:10

标签: jquery select filter element contains

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

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

我很难弄清楚如何只选择包含文字的元素。现在,上面的代码将h1的颜色变为#09f当该元素悬停时,它应该只将匹配的h1的颜色变为#09f。 / p>

我试图通过不同的用例来解决这个问题。 有没有人知道只对匹配元素做某事的最佳方法? 它会是.filter()吗? :包括()? 。载有()? 。是()?

3 个答案:

答案 0 :(得分:2)

您可以在:contains选择器上使用h1

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

工作jsfiddle

注意:由于没有向hover()提供css颜色的输出处理程序,但您可以使用second argument to hover()进行修复。这是一个fiddle

答案 1 :(得分:1)

我认为你想要这样的东西,只会在h1中找到正在盘旋的文本“three”并仅改变h1的颜色:

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

答案 2 :(得分:1)

直接使用.is()

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

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