2016-06-29 5 views
1

Wie können wir jQuery verwenden, um die Liste der Elemente basierend auf der ausgewählten Option aus der Dropdown-Liste zu filtern?Wie filtere ich die Liste der Elemente mit Data-Rel-Tags

Jedes der Elemente hat eine Daten rel Tag

<select id="lstkbCategory" data-placeholder="Choose a Category"> 
    <option> --show all-- </option> 
    <option>close</option> 
    <option>general</option> 
    <option>verification</option> 
    <option>welcome</option> 
</select> 
<br> 
<div class="kb-items"> 
    <a class="kb-item" href="#" data-rel="verification">xxx</a> 
    <a class="kb-item" href="#" data-rel="close">xxx</a> 
    <a class="kb-item" href="#" data-rel="welcome">444</a> 
    <a class="kb-item" href="#" data-rel="welcome">aaa</a> 
    <a class="kb-item" href="#" data-rel="general">bbb</a> 
    <a class="kb-item" href="#" data-rel="general">ggg</a> 
    <a class="kb-item" href="#" data-rel="general">qqq</a> 
    <a class="kb-item" href="#" data-rel="general">sos</a> 
</div> 

Antwort

2

versuchen

$("#lstkbCategory").change(function() { 
    var value = $(this).val(); 

    $(".kb-items .kb-item").show(); 

    if (value !== '-- show all --') { $(".kb-items .kb-item[data-rel !='" + value + "']").hide(); } 
}); 
1

$('#lstkbCategory').change(function() { 
 

 
    var value = $('option:selected', this).text();//get the text of selected option 
 

 
    $('.kb-items a').filter(function(i, v) { 
 
    $(v).removeClass('red') 
 
    return $(v).attr('data-rel') == value//compare the option with the data-rel 
 

 

 

 
    }).addClass('red')//addClass to anchor with matching data-rel to value 
 

 
})
.red { 
 
    display:none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="lstkbCategory" data-placeholder="Choose a Category"> 
 
    <option>--show all--</option> 
 
    <option>close</option> 
 
    <option>general</option> 
 
    <option>verification</option> 
 
    <option>welcome</option> 
 
</select> 
 
<br> 
 
<div class="kb-items"> 
 
    <a class="kb-item" href="#" data-rel="verification">xxx</a> 
 
    <a class="kb-item" href="#" data-rel="close">xxx</a> 
 
    <a class="kb-item" href="#" data-rel="welcome">444</a> 
 
    <a class="kb-item" href="#" data-rel="welcome">aaa</a> 
 
    <a class="kb-item" href="#" data-rel="general">bbb</a> 
 
    <a class="kb-item" href="#" data-rel="general">ggg</a> 
 
    <a class="kb-item" href="#" data-rel="general">qqq</a> 
 
    <a class="kb-item" href="#" data-rel="general">sos</a> 
 
</div>

+0

Dank für die schnelle Antwort, bitte können Sie ändern dies, um die Elemente tatsächlich zu filtern/auszublenden? –

+0

ändern Sie die Klasse rot in 'display none' @CharlesOkwuagwu – guradio

+0

Nochmals vielen Dank. Bitte warum wählen Sie removeClass im Vergleich zu '$ (". kb-items .kb-item "). hide(); $ (". Kb-Elemente .kb-Element [Datenrel = '" + val + "']"). Show() ', in einer anderen Antwort vorgeschlagen? –

Verwandte Themen