2013-03-23 3 views
3

Как я могу изменить эту функцию, чтобы использовать метод вместо find()?Использование метода jQuery.contains() с атрибутами данных в этой функции вместо find()

Я использую функцию для фильтрации одежды по различным атрибутам (например, цвет, категория продукта, случаю и т. Д.), И функция в настоящее время возвращает только точные соответствия. Поскольку элементы часто имеют более одного значения для атрибута (т. Е. Более одного цвета), я бы хотел использовать вместо find(), но я не смог определить правильный синтаксис для использования с атрибутами данных

Я отправил скрипку с простым примером функции здесь: http://jsfiddle.net/chayacooper/WZpMh/5/

$('#filterStyleOptions li a').click(function() { 
     var attrStyle = $(this).data('style'); 
     $('#filterStyleOptions li').removeClass('active'); 
     $(this).parent().addClass('active'); 
     if (attrStyle == 'All') { 
      $('#content').find('li').show(); 
     } else { 
      // $('#content').find('li').hide(); 
      $('#content').find('li:not([data-style="' + attrStyle + '"])').hide(); 
      $('#content').find('li[data-style="' + attrStyle + '"]').show(); 
     } 
     return false; 
    }); 
+0

использование jQuery filter() function –

+0

@TamilSelvan - Я думаю, что я, вероятно, могу использовать * = здесь, но мне бы хотелось знать, как правильно использовать фильтр(), потому что это определенно пригодится :-) –

ответ

9

Вы спутать jQuery.contains для содержит синтаксис селектора:

$('#content').find('li[data-style*="' + attrStyle + '"]').show(); 

*= вместо = средства содержит. Вы также можете использовать ~=, чтобы искать только целые слова, которые, скорее всего, будут тем, что вы хотите. Документация для всего этого находится здесь: http://api.jquery.com/category/selectors/

+0

Это именно то, что мне нужно: -D Я забыл, что есть 2 разных типа:;) Спасибо большое за то, что не только объясняли это мне, но и рассказывали мне, как ищите целые слова - что будет очень полезно: -D Система заставляет меня ждать 10 минут, пока я не смогу принять ваш ответ, поэтому, к сожалению, я не могу принять это так быстро, как вы ответили на мой пост ;-) –

+0

@ChayaCooper рад это помогло :) – Dave