2

特定のリストでのみ検索しているため、データベース呼び出しを回避することが目標である単純な検索を実行しようとしています。

すべての単語がより多くの情報を含むリストに表示される用語集を作成しています。どういうわけか:containsセレクターを使用して、ユーザーが検索した単語、つまり「rooftiles」に移動できますか?

好き:

$("div:contains('rooftiles')");

私の例では、検索ボックスに「屋根瓦」と入力すると、その単語が見つかった場合は、その単語にジャンプします。<a name="rooftiles">

誰かがこれを行う方法について正しい方向に私を向けることができますか?

4

3 に答える 3

2
$('#search').on('keyup', function(e) {
    // when user press enter
    if (e.which == 13) {
        var val = $.trim(this.value);
        if (val) {
            var target = $('div:contains(' + val + ')').first();
            if (target.length) {
                var top = target.position().top;
                $('body').animate({
                    scrollTop: top
                }, 500);
            }
        }
    }
});​

デモ

于 2012-09-04T11:02:16.550 に答える
1

私があなたの質問をよく理解していれば多分あなたは

  1. divの最初の出現を含むを見つけるword
  2. そのoffsetTop価値を得る
  3. 指定された量だけページをスクロールさせます

何かのようなもの

function jumpToWord(word) {
    var p = ($.browser.opera)? $("html") : $("html,body"),
        d = $("div:contains('" + word + "')").eq(0),
        offset = d.offset().top;
    p.animate({ scrollTop: offset }, 1000);
}

正確を期すために、テキストが短い段落に含まれている場合は、おそらく次のように検索することをお勧めします。

$("div p:contains('" + word + "')")
于 2012-09-04T10:57:47.593 に答える
1

この場合、私は提案します:

$('a[name*="rooftiles"]');

または :

$('a[name~="rooftiles"]');
于 2012-09-04T10:53:17.347 に答える