这是一个非jquery方法,但它应该为您工作。
假设我在网站上发表了一篇著名的演讲。搜索给定关键字,在整个文档中说"hello"并将出现次数保存为整数的最佳方法是什么?我真的不知道从哪里开始。
var wordcount;
$('#wrapper').each(function(e)
{
$("div:contains('hello')"){ //all content will be in the wrapper div
wordcount++;
});
});
我知道这可能是不对的,但希望我在正确的轨道上。谢谢你的帮助! 最简单的方法是返回RegExp match
的长度:
var count = $("#wrapper div:contains('hello')").html().match(/hello/ig).length;
var numberOfMatches = $('div').text().match(/hello/ig).length;
不幸的是,这个div:contains只会触发一次。它正在查找包含该文本的所有div。除非你把每个单词都用div标签包起来…
var text = $('#wrapper').text();
var words[] = text.split(' ');
var count = 0;
for(var i=0; i<words.length; i++){ if(words[i].IndexOf("TheWord") >= 0){ count++; } }
如果您想以交互方式(即使用动态字符串)完成此操作,则此实现是惯用的:
http://jsfiddle.net/entropo/S5uTg/JS…
$("#keyword").keyup(function() {
var value = $(this).val(),
re = new RegExp(value, 'ig'),
count = $("#speech").text().match(re).length;
$("#result").text("Occurences: " + count);
});
HTML…
<div id="search-form">
<legend>Search through this text</legend>
<label for="keyword">Keyword</label>
<input id="keyword" name="keyword" type="search"
placeholder="e.g. - today" required="" autofocus="" />
<div id="result"></div>
</div>