我有一个MVC Web应用程序,显示~2000行“divs”,我想让用户能够搜索并突出显示关键字。我尝试使用jQuery插件,但性能非常糟糕,IE几乎挂了!所以,我想知道这是否是最好的方法呢?如果我没有得到一个更快的版本,我宁愿在服务器上进行“AJAX调用”并重新渲染整行 - 这样至少用户不会感觉浏览器被挂起!
有什么建议吗?
谢谢!
答案 0 :(得分:2)
您应该通过对服务器的AJAX调用来执行此操作,提供突出显示关键字字符串并返回div,如下所示:
$("#content").load('page.aspx', {'keywords':$('#searchBox').val()});
在这种方法中,您的服务器将仅根据传递的keywords
字符串返回div(突出显示!),这将使用它们填充<div id="content">
。
客户端上的突出显示很便宜,但搜索要突出显示的内容在javascript中非常昂贵,这是很多DOM抓取工作。在超时时通过服务器执行此操作将是最佳方法,因此它不会执行此操作,因为他们正在键入每次击键,如下所示:
$('#searchBox').unbind('keyup').keyup(function() {
clearTimeout($.data(this, 'timer'));
var wait = setTimeout(function() {
$("#content").load('page.aspx', {'keywords':$('#searchBox').val()});
}, 150);
$(this).data('timer', wait);
});
这将执行服务器回调,但在用户停止键入后仅执行150ms。我发现这是一个舒适的间隔,但可以根据需要进行调整......或者将函数直接绑定到某事物的click
事件......最适合您的界面:)