2012-09-04 74 views
2

我想做一個簡單的搜索,我的目標是避免任何數據庫調用,因爲我只在特定列表中搜索。jQuery的搜索與:包含選擇器

我正在製作詞彙表,其中所有單詞都以更多信息顯示在列表中。 我可以以某種方式使用:包含選擇去用戶曾搜索詞,即:「rooftiles」

像:

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

鑑於我的例子中,我填寫「rooftiles」中的搜索框如果找到這個單詞,它會跳到這個單詞àla <a name="rooftiles">

有人能指出我如何做到這一點的正確方向?

+0

明確了'searchbox' /'anchor'和'div'的歧義。發佈一些'HTML'。 – thecodeparadox

回答

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); 
      } 
     } 
    } 
});​ 

Demo

+0

這正是我期待的!發現! 謝謝:) –

+0

@MortenHagh不客氣 – thecodeparadox

+0

關於這個問題的一個問題 - 我怎樣才能得到它來選擇我的div類名爲「字頭」是內部的div(「#全字框」)和(「.word-content-box)。 當我只是做$('div.word-header:contains('+ val +')')。first();它不滾動到單詞頭。 –

1

在這種情況下,我建議:

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

或者:

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

如果我很清楚你的問題,也許你可以

  1. 找到包含第一次出現的divword
  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 + "')")