我正在尝试进行一个简单的搜索,我的目标是避免任何数据库调用,因为我只在特定的列表中搜索。
我正在制作一个词汇表,其中所有单词都显示在一个包含更多信息的列表中。我可以以某种方式使用: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"]');
如果我完全理解你的问题,也许你可以
- 查找包含第一次出现的
word
的div
- 获取其
offsetTop
值 - 使页面滚动给定的金额
类似的东西
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 + "')")