使用Jquery选择所有innerHTML以某个字符串开头的元素?

23

我知道你可以使用 :contains 获取 innerHTML 中包含特定字符串的元素,但是如何获取 innerHTML 以某个字符串开头的元素呢?


3
你的意思是所有第一个子节点是文本节点的元素吗? - Russ Cam
4个回答

23

使用筛选函数,您可以根据任何标准进行筛选:

var spans = $("span").filter(function(idx) {
   return this.innerHTML.indexOf(myString) == 0;
});

4
不需要包装东西 :) this.innerHTML 可以起作用,而且更加经济实惠。 - Nick Craver

21

我知道这个问题比较老,但如果有人在寻找更好的解答,自jQuery v1.1.4以来已经提供了一个名为":contains("text")"的选择器。

示例HTML:

<p>Please reply above this line...</p>

下面是一个使用jQuery选择器的HTML示例:

$('p:contains("Please reply above this line")');

1
我喜欢在旧帖子中找到这些更简单(至少对眼睛来说)的解决方案。这个更易于理解语义。 - Sablefoste
4
问题陈述中提到OP已经了解了:contains,但需要一些只基于innerHTML字符串开头进行过滤的方法。因此@joshperry提供的解决方案是正确的。 - Richard Williams
1
最好的和最干净的。谢谢! - Phemelo Khetho

2
您可以像这样做:

您可以像这样做:

<!doctype HTML>
<html>
<head>
<script type = "text/javascript" language = "JavaScript" src = "jquery-1.4.2.min.js"></script>
<script type = "text/javascript" language = "JavaScript">
var elems;
$(document).ready(function(){
    $("div").each(function(){
        var content = $(this).html();
        if (content.match(/asdf/)){
            alert(content);
        }
    });
});
</script>
</head>
<body>
<div>asdfaowhguiwehgiuh</div>
<div>asdfaowhguiwehgiuh</div>
<div>fdsaaowhguiwehgiuh</div>
<div>fdsaaowhguiwehgiuh</div>
<div>fdsaaowhguiwehgiuh</div>
<div>asdfaowhguiwehgiuh</div>
</body>
</html>

为了查找是否在内容中..如果您想要前几个字符,应该在这些字符上分割内容并仅测试它。


1

过滤器方法可以让您比较元素的内容,然后您可以按照自己的意愿进行操作(在这种情况下,我已经执行了addClass('selected'))。

$('p').filter(function() {
  var searchString = 'Blue';
  return ($(this).html().substring(0, searchString.length) == searchString);
}).addClass('selected');

演示:

http://jsbin.com/ironi/2


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接