если данные списка содержат - PullRequest
0 голосов
/ 21 ноября 2011

У меня следующая проблема

<a href="" class="so" title="Schuko"></a>

<a href="" class="so" title="French CEE17"></a>

    $('a.so').live("click", function () {   
        var filter = $(this).attr("title");
                if (filter) {       
                    $('li:contains('+$(this).attr("title")+')').each(function(){
    alert('yes');
});      
                }       
            return false;
    });

<ul class="product_content">
<li class="prod" data-sockets="UK 15A CEE22 Schuko French Swiss Danish ">text goes here</li>
<li class="prod" data-sockets="UK 15A Schuko French CEE17 (16A) Socapex Harting Dutch Harting ">text goes here</li>
</ul>

Я пытаюсь перебрать все, что содержит значение data-sockets, чтобы показать и скрыть другие элементы li.

Ответы [ 4 ]

1 голос
/ 21 ноября 2011
 $('a.so').live("click", function () {   
        var filter = $(this).attr("title");
                if (filter) {   
                    // loop only trough li-s that have data-sockets attr
                    $('li[data-sockets]').each(function(){

                   if ($(this).find(':contains('+filter+')'))
                   {
                         alert('yes');
                   }
                 });      
                }       
            return false;
    });

вторая версия:

$('a.so').live("click", function () {   
        var filter = $(this).attr("title");
                if (filter) {   
                    // loop only trough li-s that have data-sockets attr
                    $('li[data-sockets]:contains('+filter+')').each(function(){


                         $(this).fadeOut();

                 });      
                }       
            return false;
    });
1 голос
/ 21 ноября 2011

или вы можете выбрать его следующим образом:

    $('a.so').live("click", function () {   
        var filter = $(this).attr("title");

        $('li[data-sockets*="'+filter+'"]').each(function() {
            alert( 'yes' );
        });
        return false;
    });

здесь используется атрибут jquery , содержащий селектор

jsfiddle здесь

0 голосов
/ 21 ноября 2011

Попробуйте это ....

<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
        $('a.so').live("click", function () {   
            var filter = $(this).attr("title");
            if (filter) {

                // hide all the list elements
                $('li').each(function(){
                    $(this).hide();
                });                    

                // show the elements that contains only filter string
                $('li:contains('+filter+')').each(function(){
                    $(this).show();
                });      
            }       
            return false;
        });
    });
</script>
</head>

<body>

<a href="" class="so" title="Schuko">Schuko</a>

<a href="" class="so" title="French CEE17">French CEE17</a>



<ul class="product_content">
<li class="prod" data-sockets="UK 15A CEE22 Schuko French Swiss Danish ">UK 15A CEE22 Schuko French Swiss Danis</li>
<li class="prod" data-sockets="UK 15A Schuko French CEE17 (16A) Socapex Harting Dutch Harting ">"UK 15A Schuko French CEE17 (16A) Socapex Harting Dutch Harting </li>
</ul>



</body>
</html>
0 голосов
/ 21 ноября 2011

$("li").data("sockets") должен получить его.

...