【发布时间】:2011-04-07 13:38:43
【问题描述】:
我知道你可以使用 :contains 来获取 innerHTML 包含某个字符串的元素,但是我怎样才能获取 innerHTML 以字符串开头的元素呢?
【问题讨论】:
-
你是指所有 firstChild 是文本节点的元素吗?
标签: javascript jquery html dom
我知道你可以使用 :contains 来获取 innerHTML 包含某个字符串的元素,但是我怎样才能获取 innerHTML 以字符串开头的元素呢?
【问题讨论】:
标签: javascript jquery html dom
使用过滤器功能,您可以根据您喜欢的任何条件进行过滤:
var spans = $("span").filter(function(idx) {
return this.innerHTML.indexOf(myString) == 0;
});
【讨论】:
this.innerHTML 有效,而且价格也便宜得多。
你可以这样做:
<!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>
为了确定它是否在内容中..如果您想要前几个字符,您应该将内容拆分为这些字符并进行测试。
【讨论】:
过滤器方法可以让你比较一个元素的内容,然后你可以做任何你喜欢的事情(在这种情况下,我做了addClass('selected'))。
$('p').filter(function() {
var searchString = 'Blue';
return ($(this).html().substring(0, searchString.length) == searchString);
}).addClass('selected');
演示:
【讨论】:
我知道这是旧的,但如果有人正在寻找更好的答案,jQuery 自 v1.1.4 以来有一个 ":contains("text")" selector。
示例 HTML:
<p>Please reply above this line...</p>
示例 jQuery 在 HTML 上方选择:
$('p:contains("Please reply above this line")');
【讨论】:
:contains 但需要一些东西来根据 innerHTML 字符串的开头进行过滤。因此@joshperry 有正确的解决方案。