使用jQuery查找文本string?

假设一个网页有一个string,比如我想find的“我是一个简单的string”。 我将如何去使用JQuery?

7 Solutions collect form web for “使用jQuery查找文本string?”

jQuery有包含的方法。 这是你的一个片段:

<script type="text/javascript"> $(function() { var foundin = $('*:contains("I am a simple string")'); }); </script> 

上面的select器select包含目标string的任何元素。 foundin将是一个包含任何匹配元素的jQuery对象。 请参阅http://docs.jquery.com/Selectors/contains#text上的API信&#x606F;

有一件事要注意与'*'通配符是,你会得到所有的元素,包括你的HTML一个身体的元素,你可能不想要的。 这就是为什么jQuery和其他地方的大多数例子使用$('div:contains(“我是一个简单的string”))

通常,jQueryselect器不会在DOM中的“文本节点”内进行search。 但是,如果使用.contents()函数,将包含文本节点,那么可以使用nodeType属性来仅筛选文本节点,并使用nodeValue属性来search文本string。

     $('*','body')
         .andSelf()
         。内容()
         .filter(函数(){
            返回this.nodeType === 3;
         })
         .filter(函数(){
             //只有在文本中的任何位置包含“简单string”时才匹配
            返回this.nodeValue.indexOf('简单string')!= -1;
         })
         。每个(函数(){
             //用this.nodeValue做些什么
         });

这将只select包含“我是简单的string”的叶子元素。

 $('*:contains("I am a simple string")').each(function(){ if($(this).children().length < 1) $(this).css("border","solid 2px red") }); 

将以下内容粘贴到地址栏中进行testing。

 javascript: $('*:contains("I am a simple string")').each(function(){ if($(this).children().length < 1) $(this).css("border","solid 2px red") }); return false; 

如果你想抓住“我是一个简单的string” 。 首先将文本包裹在像这样的元素中。

 $('*:contains("I am a simple string")').each(function(){ if($(this).children().length < 1) $(this).html( $(this).text().replace( /"I am a simple string"/ ,'<span containsStringImLookingFor="true">"I am a simple string"</span>' ) ) }); 

然后做这个。

 $('*[containsStringImLookingFor]').css("border","solid 2px red"); 

如果你只是想要最接近你正在search的文本的节点,你可以使用这个:

 $('*:contains("my text"):last'); 

如果你的HTML看起来像这样,这甚至可以工作:

 <p> blah blah <strong>my <em>text</em></strong></p> 

使用上面的select器将find<strong>标签,因为这是包含整个string的最后一个标签。

看看高亮 (jQuery插件)。

只是增加了托尼·米勒的答案,因为这让我90%的东西,我正在寻找,但仍然没有工作。 添加.length > 0; 到他的代码结束了我的脚本工作。

  $(function() { var foundin = $('*:contains("I am a simple string")').length > 0; }); 

这个function应该工作。 基本上做一个recursion查找,直到我们得到一个明确的叶节点列表。

 function distinctNodes(search, element) { var d, e, ef; e = []; ef = []; if (element) { d = $(":contains(\""+ search + "\"):not(script)", element); } else { d = $(":contains(\""+ search + "\"):not(script)"); } if (d.length == 1) { e.push(d[0]); } else { d.each(function () { var i, r = distinctNodes(search, this); if (r.length === 0) { e.push(this); } else { for (i = 0; i < r.length; ++i) { e.push(r[i]); } } }); } $.each(e, function () { for (var i = 0; i < ef.length; ++i) { if (this === ef[i]) return; } ef.push(this); }); return ef; } 
  • 在DIV元素上捕获按键(或keydown)事件
  • jQuery.click()与onClick
  • 相反的追加在jQuery中
  • $(this.el).html和这个$ el.html有什么区别?
  • 什么会导致“HIERARCHY_REQUEST_ERR:DOMexception3” - 错误?
  • 如何模糊div元素?
  • 如何更新window.location.hash而不跳过文档?
  • load()方法被弃用?
  • 一个简单的JavaScript倒数计时器的代码?
  • 如何在jQuery中select具有其名称属性的元素?
  • 如何等待5秒钟的jQuery?