如何通过它最接近的匹配文本获取元素?

时间:2015-01-12 06:40:02

标签: javascript jquery regex

我有多个h3,其中包含各种文字。我想通过它的文本内容选择一个元素。但是我没有从后端收到确切的文本匹配。

但我和我有部分可混合的文字。使用这个如何选择受尊重的元素。

示例html:

<h3>civil</h3>
<h3>mechanical</h3>
<h3>electrical</h3>

js:

var text = "civil engineering";

var element = $('h3').closest(":contains('"+text+"')");

console.log(element);

这里我有var text = civil engineering使用这个我想选择h3元素。

不仅匹配这个,还有很多。我想将文字与closest

相匹配

Live Demo

2 个答案:

答案 0 :(得分:1)

我理解正确

您需要将.filter()indexOf()

结合使用
var text = "civil engineering";
var element = $('h3').filter(function(){
    return text.indexOf($(this).text()) != -1;
});

    $(document).ready(function() {
      var text = "civil engineering";
      var element = $('h3').filter(function() {
        return text.indexOf($(this).text()) != -1;
      });

      console.log(element.text());
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h3>civil</h3>
<h3>mechanical</h3>
<h3>electrical</h3>

答案 1 :(得分:0)

您可以使用indexOf()功能:

var h3 = $('h3');
var str = 'civil engineering';

h3.each(function() {
    if (str.toLowerCase().indexOf($(this).text()) >= 0) {
        $(this).addClass('found');
    }    
});

包含您设置的字符串的每个h3都会获得类.found