2013-05-04 133 views
-1

我使用這個jQuery動態濾鏡插件:jQuery的現場過濾器和標籤

(function($){ 
    $.fn.liveFilter = function(inputEl, filterEl, options){ 
     var defaults = { 
      filterChildSelector: null, 
      filter: function(el, val){ 
       return $(el).text().toUpperCase().indexOf(val.toUpperCase()) >= 0; 
      }, 
      before: function(){}, 
      after: function(){} 
     }; 
     var options = $.extend(defaults, options); 

     var el = $(this).find(filterEl); 
     if (options.filterChildSelector) el = el.find(options.filterChildSelector); 

     var filter = options.filter; 
     $(inputEl).keyup(function(){ 
      var val = $(this).val(); 
      var contains = el.filter(function(){ 
       return filter(this, val); 
      }); 
      var containsNot = el.not(contains); 
      if (options.filterChildSelector){ 
       contains = contains.parents(filterEl); 
       containsNot = containsNot.parents(filterEl).hide(); 
      } 

      options.before.call(this, contains, containsNot); 

      contains.show(); 
      containsNot.hide(); 

      if (val === '') { 
       contains.show(); 
       containsNot.show(); 
      } 

      options.after.call(this, contains, containsNot); 
     }); 
    } 
})(jQuery); 

我想要做的是過濾器的基礎上的標籤太多,所以名單得到由數據標記過濾每個元素的屬性。 這是HTML的樣子:

<li><a href="#" data-tags="tag1">content</a></li> 

目前它過濾根據標籤的內容,我需要在過濾器參與數據標籤太多。

這裏是小提琴: http://jsfiddle.net/BR7KE/

+0

問題是? – Andreas 2013-05-04 20:25:13

+0

@Andreas ...我想要做的也是基於標籤進行過濾...我也需要數據標籤參與過濾,我已經提到了我想要的兩次。閱讀問題! – 2013-05-04 20:27:41

+0

SO是一個提問有關特定問題而不是代碼請求網站的網站......並且我沒有看到任何問題,因此我詢問了您的問題。 – Andreas 2013-05-04 20:35:10

回答

1

通濾波器選項,在這裏你返回由文本和數據標籤過濾元件插件

試試這個

$('#livefilter-list').liveFilter('#livefilter-input', 'li', { 
     filterChildSelector: 'a', 
     filter: function(el, val){ 
      return $(el).data('tags') == val || $(el).text().toUpperCase().indexOf(val.toUpperCase()) >= 0; 
     }, 

}); 

沒有必要修改核心插件...

working fiddle

+0

恩,謝謝,請教我如何添加更多屬性,如數據類別 – 2013-05-04 21:06:14

+0

,就像數據類別中的過濾器一樣....然後返回您在「||'..example」分隔的過濾器函數中需要的內容。 ..'return $(el).data('tags')== val || $(el).text()。toUpperCase()。indexOf(val.toUpperCase())> = 0 || $(el).data('categories')== val;' – bipen 2013-05-04 21:17:16

+0

反正...歡迎...很高興幫助 – bipen 2013-05-04 21:27:02