jQuery - 检查标签的内容是不是等于 sometext 然后做一些事情

Posted

技术标签:

【中文标题】jQuery - 检查标签的内容是不是等于 sometext 然后做一些事情【英文标题】:jQuery - Check if the tag's content is equal to sometext then do somethingjQuery - 检查标签的内容是否等于 sometext 然后做一些事情 【发布时间】:2012-01-26 02:29:36 【问题描述】:

假设我的内容中有很多这样的内容 div : <cite class="fn">blabla</cite>

如何检查每个 cite 标签的 content(在本例中为:blabla)与 fn 类,看看它是否等于“sometext”,然后将其颜色更改为红色?

很简单。

【问题讨论】:

【参考方案1】:
$('cite.fn:contains(blabla)').css('color', 'red');

编辑:虽然它也会匹配“blablablabla”。

$('cite.fn').each(function () 
    if ($(this).text() == 'blabla') 
        $(this).css('color', 'red');
    
);

应该更准确。

编辑:实际上,我认为 bazmegakapa 的解决方案更优雅:

$('cite.fn').filter(function () 
    return $(this).text() == 'blabla';
).css('color', 'red');;

【讨论】:

还匹配<cite class="fn">textblabla</cite>,如果搜索词很容易成为子字符串,这可能会导致问题。【参考方案2】:

您可以使用神奇的.filter() 方法。它可以将一个函数作为其参数,这会将 jQuery 集合的元素减少为那些通过其测试的元素(函数返回 true)。之后,您可以轻松地在其余元素上运行命令:

var searchText = 'blabla';

$('cite.fn').filter(function () 
    return $(this).text() === searchText;
).css('color', 'red');

jsFiddle Demo

【讨论】:

关于jQuery性能,更好的预选器更好?示例:$("cite.fn:contains('"+searchText+"')").filter(function()return $(this).text().length==searchText.length); @PeterKrauss 我不会说它更好。 :contains() 不是标准选择器,因此 jQuery 必须使用自己的引擎,而不是更快的原生引擎(它通常使用)。因此,一方面你赢了,另一方面你就输了。你可以做一个 jsPerf 基准测试并在这里发布结果。 好,the test is there(你可以检查链接并纠正测试如果错误)。预选策略不好,你原来的代码比较快。 @PeterKrauss 不错的测试。基本上这就是为什么你不应该在大多数时候使用非标准的jQuery selectors。如果原生 querySelectorAll() 支持选择器,那就快多了。【参考方案3】:

您可能会执行以下操作:

$('cite.fn').each(function() 
  var el = $(this);
  if (el.text() === 'sometext') 
     el.css( 'color' : 'red' );
  
);

这会针对每个具有 fn 类的 cite 触发一个函数。该函数检查当前cite 的值是否等于'sometext'。

如果是,那么我们将 CSS color (text-color) 属性更改为 red

注意我在此示例中使用 jQuery,因为您已专门标记您的问题 jQuery。忽略不赞成票,这是在我编辑我犯的错字之前应用的(el.val() 而不是el.text()

【讨论】:

@kolink 所以你把它改成 .html() 或 .text() 就可以了。顺便说一句,让人们变得愚蠢的不是 jQuery,而是整个互联网。 @Kolink 你对第一部分是正确的。对于第二部分......您仍然可以编辑您的评论。 jQuery 不会让任何人变得愚蠢。 @Kolink 使用原生 javascript 会让你自大吗? 如果没有它,我看到的每个使用 jQuery 制作的网站都可以更快、更高效地工作一百倍 [耸耸肩] 无论如何,我很确定有人因为我的评论,这是真正的成熟的[/sarcasm] 我的回答有效,并且没有依赖关系。 @Kolink 在你第一次发表评论后,当你谈到成熟时,你听起来很有趣:)。当你正确使用 jQuery 时,它是一个很棒的工具。如果你是一个糟糕的程序员,你也可以用 vanilla JS 编写糟糕的程序。问题不在于 jQuery。 (顺便说一句,我认为您的回答没有反对意见)【参考方案4】:

没有 jQuery:

var elms = document.querySelectorAll("cite.fn"), l = elms.length, i;
for( i=0; i<l; i++) 
    if( (elms[i].innerText || elms[i].textContent) == "blabla") 
        elms[i].style.color = "red";
    

【讨论】:

请注意querySelectorAll will not natively work in IE7 and below。使用 jQuery 之类的 JavaScript 框架不必担心太多。

以上是关于jQuery - 检查标签的内容是不是等于 sometext 然后做一些事情的主要内容,如果未能解决你的问题,请参考以下文章

JQuery判断DIV中是不是包含图片标签

使用 Jquery 检查 AUDIO 标签是不是具有有效的 src

如何检查来自firebase的日期是不是等于今天[重复]

jquery检查数字是不是在列表中[重复]

检查一个复选框是不是在 jQuery 中检查

如何检查选择器是不是匹配 jQuery 中的某些内容? [复制]