jquery search with:包含选择器



我正在尝试进行一个简单的搜索,我的目标是避免任何数据库调用,因为我只在特定的列表中搜索。

我正在制作一个词汇表,其中所有单词都显示在一个包含更多信息的列表中。我可以以某种方式使用:contains选择器转到用户搜索的单词吗,即:"roofttiles"

类似:

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

举个例子,我在搜索框中填写"roofttiles",如果找到这个词,它就会跳到那个词àla <a name="rooftiles">

有人能为我指明正确的方向吗?

$('#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);
            }
        }
    }
});​

演示

在这种情况下,我建议:

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

或者:

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

如果我完全理解你的问题,也许你可以

  1. 查找包含第一次出现的worddiv
  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 + "')")

最新更新