【问题标题】:jQuery or JavaScript equivalent of PHP strpos function to find string on a pagejQuery 或 JavaScript 等效于 PHP strpos 函数,用于在页面上查找字符串
【发布时间】:2011-04-28 01:14:08
【问题描述】:

JavaScript 或 jQuery 中是否有类似 PHP 中的strpos 的等效函数?

我想在页面上的元素中找到一个字符串。我正在寻找的字符串是:

td class="SeparateColumn"

我想要一些可以像这样运行它的东西:

if $("anystring")
  then do it

【问题讨论】:

  • 您使用的是已经存在于纯 Javascript 中的那个?
  • 我明白了,所以您想在整个页面中搜索字符串?
  • 当我尝试在 jQuery 中使用时,我得到“indexOf 不是函数”还有其他方法可以用 javascript 做到这一点吗? ? ?帮助!

标签: javascript jquery


【解决方案1】:

你不需要 jquery —— 普通的旧 Javascript 就可以了,使用 .indexof() 方法。

但是,如果您真的想要 PHP 的 strpos() 的语法完全匹配,可以这样做:

function strpos (haystack, needle, offset) {
  var i = (haystack+'').indexOf(needle, (offset || 0));
  return i === -1 ? false : i;
}

注意:这个函数取自这里:http://phpjs.org/functions/strpos:545

JSFiddle

【讨论】:

  • IE8及以下不支持indexOf
  • @YouBook 是 Array.indexOf(),而不是 String.indexOf(),旧版本的 IE 不支持。
【解决方案2】:

我假设您的意思是检查字符串是否包含字符以及字符串中的位置 - 您想在 JS 中使用字符串的 indexOf() 方法。这是relevant docs


好的,所以你想搜索整个页面! :contains() 选择器会这样做。 :containsthe jQuery docs

要搜索页面中的每个元素,请使用

var has_string = $('*:contains("search text")');

如果您返回 jQuery 元素,则搜索成功。例如,在这个页面上

var has_string=$('*:contains("Alex JL")').length
//has_string is 18
var has_string=$('*:contains("horsey rodeo")').length
//has_string if 0. So, you could an `if` on this and it would work as expected.

【讨论】:

  • 当然,在示例中包含“horsey rodeo”的行为使最后一部分在技术上是错误的,但我们不会陷入这个难题。
  • 听起来不错;如何检查元素 在此页面上是否有特定字符串
  • @Tom if($('td.SeparateColumn:contains("the string")')){/* do something*/} 应该这样做。
  • 谢谢,但这失败了:if(jQuery("tr.SeparateRow:contains('mycode')"))
  • @Tom 以哪种方式失败?一个错误,或者它没有找到字符串?哦 - 你有tr.SeparateRow,我想你的意思是td.SeparateRow
猜你喜欢
相关资源
最近更新 更多
热门标签