当前位置:  开发笔记 > 编程语言 > 正文

在html Javascript中搜索

如何解决《在htmlJavascript中搜索》经验,为你挑选了1个好方法。

我有下面的html代码,我也将有一个用于输入关键字的文本框,我想要的是当用户在此文本框中使用FirstName和LastName在此html代码中搜索javascript时,以及在比较项目时,如果是项目不匹配我想显示:没有它的容器div.我怎样才能使用JS并在firfox和IE上工作

                
FirstName LastName
ACharName AnyLast
BCharName AnyLast
CCharName AnyLast

Energiequant.. 5

如果要显示更多的联系人,这看起来效率很低.最简单的方法是使用jQuery并将函数绑定到文本字段的keyup事件:(假设上面的代码包含在类似的内容中

)

var searchstring = "";

function filterContact() {
  var jthis = $(this); // should give a tiny performance gain
  if ($('span.contactItem', this).text().toLowerCase().indexOf(searchstring) >= 0) {
    jthis.addClass('matching');
    jthis.removeClass('nonmatching');
  } else {
    jthis.addClass('nonmatching');
    jthis.removeClass('matching');
  }
}

function filterContacts() {
  var elem = $('input#yourtextfield')[0];
  searchstring = elem.value.toLowerCase(); // because we like to match all cases
  searchstring = searchstring.replace(/^\s+/,'').replace(/\s+$/,''); // trim

  $('#contactlist div').each(filterContact);
}

function initFiltering() {
  $('input#yourtextfield').live('keyup',filterContacts);
}

$(document).ready(initFiltering);

还要为CSS 添加.matching.nonmatching类.(display: blocknone)

如上所述,这非常低效,不仅需要内存(和带宽),还需要CPU过滤时间(加上渲染时间).如果您在某个数组中处理该数据可能会更快,或者如果您有非常大的数据集,您应该获取从服务器按需分页的过滤数据(也可以通过jQuery的AJAX函数完成).您还可以在用户仍在键入的情况下过滤延迟(仅当他停止键入~500ms时才进行过滤).

toLowerCase()非ASCII输入会有一些困难; 因此,如果您需要它,您应该使用目标语言进行测试.



1> Energiequant..:

如果要显示更多的联系人,这看起来效率很低.最简单的方法是使用jQuery并将函数绑定到文本字段的keyup事件:(假设上面的代码包含在类似的内容中

)

var searchstring = "";

function filterContact() {
  var jthis = $(this); // should give a tiny performance gain
  if ($('span.contactItem', this).text().toLowerCase().indexOf(searchstring) >= 0) {
    jthis.addClass('matching');
    jthis.removeClass('nonmatching');
  } else {
    jthis.addClass('nonmatching');
    jthis.removeClass('matching');
  }
}

function filterContacts() {
  var elem = $('input#yourtextfield')[0];
  searchstring = elem.value.toLowerCase(); // because we like to match all cases
  searchstring = searchstring.replace(/^\s+/,'').replace(/\s+$/,''); // trim

  $('#contactlist div').each(filterContact);
}

function initFiltering() {
  $('input#yourtextfield').live('keyup',filterContacts);
}

$(document).ready(initFiltering);

还要为CSS 添加.matching.nonmatching类.(display: blocknone)

如上所述,这非常低效,不仅需要内存(和带宽),还需要CPU过滤时间(加上渲染时间).如果您在某个数组中处理该数据可能会更快,或者如果您有非常大的数据集,您应该获取从服务器按需分页的过滤数据(也可以通过jQuery的AJAX函数完成).您还可以在用户仍在键入的情况下过滤延迟(仅当他停止键入~500ms时才进行过滤).

toLowerCase()非ASCII输入会有一些困难; 因此,如果您需要它,您应该使用目标语言进行测试.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有