搜索并突出显示 - 客户端与服务器端?

时间:2010-04-11 19:25:46

标签: jquery asp.net-mvc

我有一个MVC Web应用程序,显示~2000行“divs”,我想让用户能够搜索并突出显示关键字。我尝试使用jQuery插件,但性能非常糟糕,IE几乎挂了!所以,我想知道这是否是最好的方法呢?如果我没有得到一个更快的版本,我宁愿在服务器上进行“AJAX调用”并重新渲染整行 - 这样至少用户不会感觉浏览器被挂起!

有什么建议吗?

谢谢!

1 个答案:

答案 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事件......最适合您的界面:)