ドキュメント内の単語の出現箇所をすべてハイライトしたいと考えています。このために、次のコードを作成しました。
function highlight_search_param() {
// get the search_param from location.search
filters = location.search.substr(1).split('&')
search_param = ''
for (i in filters) {
param = filters[i].split('=')
if (param[0] == 'q') {
search_param = param[1];
break;
}
}
if (search_param == '') return True
alert(search_param)
// convert into many possible cases
title_search_param = search_param = search_param[0].toUpperCase() + search_param.substring(1)
$('.summary-block').contents().find(':contains("'+search_param+'"),:contains("'+search_param.toLowerCase()+'"),:contains("'+title_search_param+'"),:contains("'+search_param.toUpperCase()+'")').each(function(){
if($(this).text().indexOf(search_param)>=0) {
$(this).html($(this).text().replace(search_param, "<span class='highlight'>" + search_param +"</span>"));
}
})
}
今、私は を上書きしているのでtext()
、スパンはテキストとして表示されます。(明らかに)
を上書きするとhtml()
、他の要素 (そのテキスト ノードの兄弟) が消去される可能性があります。
ノート。
$('.summary-block
ページには )がたくさんあります- 検索では大文字と小文字を区別しない必要がありますが、置換は大文字と小文字をそのままにしておく必要があります
search_param
内部の複数のオカレンスが存在する可能性がありますsummary block
ctrl+F
基本的に、ブラウザの動作に似たものを探しています
(フィドル)[http://jsfiddle.net/bYhxs/]