$(this).hide()隐藏不应该的容器

时间:2018-02-27 19:14:22

标签: javascript jquery ios phonegap

我有一小段代码可以过滤结果列表并隐藏不匹配的div。我正在为PhoneGap iOS应用程序编写此代码。它在Android上运行良好,但在iOS上由于某种原因它在键入几个字符后隐藏整个搜索字段,而不仅仅是结果。

知道为什么吗?我把它剥离到几乎只有HTML代码和jQuery,它仍然在发生。我试着评论$(this).hide();部分并且它停止隐藏搜索字段,所以我假设某种方式是罪魁祸首,但我无法弄清楚为什么或如何解决这个问题。已经连续10个小时了。有任何想法吗?也许我可以用其他方式来定位结果?

$('#box_search').keyup(function() {

  var valThis = $(this).val().toLowerCase();

  if (valThis == "") {
    $('#listing-results > .listing_container').show();

  } else {
    $('#listing-results > .listing_container').each(function() {    
      var text = ($(this).find('.listing_results_text_name').text() + $(this).find('.listing_results_text_name').data("alt")).toLowerCase();

      if (text.indexOf(valThis) >= 0) {
        $(this).show();
      } else {
        $(this).hide();
      }
    });
  };
});

1 个答案:

答案 0 :(得分:0)

显然我无法看到html,但有时它有助于清理代码并稍微改变逻辑

var box_search = function(e){

  var myIndex = $(this).val();
  val = (!myIndex || myIndex==='')?false:myIndex;

  if(!myIndex){
    $('#listing-results > .listing_container').show();
    return;
  }

  //
  $('#listing-results > .listing_container').each(function() {

    var text = $(this).find('.listing_results_text_name').text() + 
               $(this).find('.listing_results_text_name').data("alt")

    text = (!text || text==='')?false:text;

    text = text.toLowerCase();

    if(text.indexOf(myIndex.toLowerCase()) >= 0){
     $(this).show();
      return;
    }
    $(this).hide();
  });

} //end of function

$('.box_search').keyup(box_search);