【问题标题】:How do I select a span containing a specific text value, using jquery?如何使用 jquery 选择包含特定文本值的跨度?
【发布时间】:2012-03-14 12:42:15
【问题描述】:

如何找到包含文本“FIND ME”的跨度

<div>
   <span>FIND ME</span>
   <span>dont find me</span>
</div>

【问题讨论】:

标签: javascript jquery


【解决方案1】:

http://api.jquery.com/contains-selector/

$("span:contains('FIND ME')")

预计到达时间:

包含选择器很不错,但如果可能更快的话,过滤一个跨度列表:http://jsperf.com/jquery-contains-vs-filter

$("span").filter(function() { return ($(this).text().indexOf('FIND ME') > -1) }); -- anywhere match
$("span").filter(function() { return ($(this).text() === 'FIND ME') }); -- exact match

【讨论】:

  • 这能回答我的下一个问题吗? stackoverflow.com/questions/9424509/…
  • 是的。过滤器再次成为答案,但这次您检查整个 .text() 值是否匹配,而不是查找索引。答案已更新。
  • 谢谢马尔克!我没听说过filter()。有时它是必要的,因为 contains() 是通配符比较,因此会找到 'FIND ME' 和 'DON'T FIND ME' 如果您需要精确匹配,这将无济于事
【解决方案2】:

使用contains:

$("span:contains('FIND ME')")

【讨论】:

  • 这不起作用。在 OP 中,他有两个跨度:find medont find me。您正在检查跨度是否包含此文本,因此您找到了两者。
【解决方案3】:

顺便说一句,如果你想将它与变量一起使用,你可以这样做:

function findText() {
    $('span').css('border', 'none');  //reset all of the spans to no border
    var find = $('#txtFind').val();   //where txtFind is a simple text input for your search value
    if (find != null && find.length > 0) {
        //search every span for this content
        $("span:contains(" + find + ")").each(function () {
            $(this).css('border', 'solid 2px red');    //mark the content
        });
     }
}

【讨论】:

    【解决方案4】:

    我认为这会起作用

    var span;
    $('span').each(function(){
      if($(this).html() == 'FIND ME'){
        span = $(this);
      }
    });
    

    【讨论】:

    • 如何在 Python 中使用 selenium 做到这一点?
    猜你喜欢
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多