2013-05-02 61 views
0

我想实现搜索使用div的数据过滤器属性。 这里的一个问题与this.I想实现一个像search.Currently它正在寻找确切match.Where我需要做出改变,使之成为像搜索Div喜欢搜索使用dat过滤器属性

 <label for="search">Search Input:</label> 
<input type="search" name="filter" id="search" value="" /> 
<div data-filter="vehicle1">vehicle1</div> 
<div data-filter="vehicle2">vehicle2</div> 
<div data-filter="vehicle3">vehicle3</div> 
<div data-filter="vehicle4">vehicle4</div> 
<div data-filter="vehicle5">vehicle5</div> 


$(document).ready(function() { 


    $('#search').on('keyup', function() { 
      var val = $.trim(this.value); 

      if (val) { 
       $('div[data-filter]').hide(); 
     $('div[data-filter=' + val + ']').show(); 

       } 
if(val.length == 0) 
     { 
    $('div[data-filter]').show(); 
     } 
}); 

}); 

回答

1

看看这里:CSS selectors,这是jQuery的选择器是基于什么的。

jQuery的增加,与Attribute Contains Selector

而你的情况会像这样工作:

$('div[data-filter*="' + val + '"]').show(); 
+0

它不是working.actually div的是像这样动态生成.. var elm ='

'+divcontent+'
'; $(elm).appendTo(container); ..在这些动态生成的div中,iw ant来过滤 – vmb 2013-05-02 07:16:57

+0

YA..NOW它正在工作... – vmb 2013-05-02 07:20:58

+0

我认为它起初不工作的事实并没有太多与提供的答案,更多与你如何实现它。所以你可以接受答案.. – 2013-05-03 22:44:50

0

也许这将工作:

var $divs=$("div"); 
for(var i=0;i<$divs.length;i++){ 
    console.log("div's data-filter",$divs[i]["data-filter"]); 
    console.log("value",val); 
    if($divs[i]["data-filter"] 
    &&($divs[i]["data-filter"].indexOf(val)!==-1)){ 
     $($divs[i]).show(); 
    } 
}