jquery使用tab-switch递归过滤

时间:2013-02-13 16:03:06

标签: jquery search filter

我对JQuery不太满意,但这次我已经走得很远了..

我正在尝试使用以下内容来显示输入时的搜索结果,如果您键入“rob”并单击“B”,则可以执行此操作。字母选择器工作正常:

http://tm.eth3r.co.uk/test3.html

我在这里弹出了所有代码,可能更容易查看: http://jsfiddle.net/ro6er/gQ6Nc/ (忽略所有的css,直接来自wordpress)

这是jquery:

$(function() {
    //a-z switcher
    $(document).ready(function() {
        $('.navigation-tabs a').click(function(){
            switch_tabs($(this));
            return false;
        });
        switch_tabs($('.default-tab'));  
    });
    function switch_tabs(obj)
    {   

            $('.tab-content').hide();


        $('.navigation-tabs a').removeClass("selected");
        var id = obj.attr("data-custom-attr");
        $('#'+id).show();
        obj.addClass("selected");
    }
    //a-z switcher
        if ($("#searchInput").keyup)
        {

 //Declare the custom selector 'containsIgnoreCase'.
      $.expr[':'].containsIgnoreCase = function(n,i,m){
          return jQuery(n).text().toUpperCase().indexOf(m[3].toUpperCase())>=0;
      };

      $("#searchInput").keyup(function(){
 //hide all the rows
          $(".tab-content").find("table").hide();

 //split the current value of searchInput
          var data = this.value.split(" ");
 //create a jquery object of the rows
          var jo = $(".tab-content").find("table");
 //Recursively filter the jquery object to get results. 
          $.each(data, function(i, v){
               jo = jo.filter("*:containsIgnoreCase('"+v+"')");
          });
 //show the rows that match.
          jo.show();
 //Removes the placeholder text 
      }).focus(function(){
          this.value="";
          $(this).css({"color":"black"});
          $(this).unbind('focus');
      }).css({"color":"#C0C0C0"});
        }

});

1 个答案:

答案 0 :(得分:0)

我想通了,我需要针对不同的div。我已经更新了我的jsfiddle:http://jsfiddle.net/ro6er/gQ6Nc/

用户测试并传入搜索框或A和B以查看结果。

 $(document).ready(function() {
  //a-z switcher

  $(document).ready(function() {
    $('.navigation-tabs a').click(function(){
      switch_tabs($(this));
      return false;
    });
    switch_tabs($('.default-tab'));  
  });
  function switch_tabs(obj)
  { 

      $('.tab-content').hide();


    $('.navigation-tabs a').removeClass("selected");
      var id = obj.attr("data-custom-attr");
    $('#'+id).show();
    obj.addClass("selected");
  }
  //a-z switcher

  if ($("#searchInput").keyup)
    {
 //Declare the custom selector 'containsIgnoreCase'.
      $.expr[':'].containsIgnoreCase = function(n,i,m){
          return jQuery(n).text().toUpperCase().indexOf(m[3].toUpperCase())>=0;
      };

      $("#searchInput").keyup(function(){
 //hide all the rows
          $("#searchblock").find(".tab-content").hide();

 //split the current value of searchInput
          var data = this.value.split(" ");
 //create a jquery object of the rows
          var jo = $("#searchblock").find(".tab-content");
 //Recursively filter the jquery object to get results. 
          $.each(data, function(i, v){
               jo = jo.filter("*:containsIgnoreCase('"+v+"')");
          });
 //show the rows that match.
          jo.show();
 //Removes the placeholder text 
      }).focus(function(){
          this.value="";
          $(this).css({"color":"black"});
          $(this).unbind('focus');
      }).css({"color":"#C0C0C0"});
    }
  });

我是王牌。

罗杰