0

Jquery に小さな問題があります。カートの「アイテム」をフィルタリングしたいのですが、このコードは実際にはフィルタリングしますが、「li」のみを表示し、子アイテムは表示しません。つまり、すべてを非表示にして、実際の要素のみを表示します。

「子」要素を隠さずにフィルタリングしたいのですが、 ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

                <div class="section_wrapper">
                    <ul id="prod_list">
                        <li>                                  
                            <a href="#" >
                                <div>
                                    <h5>Asus Crossfire MotherBoard LGA 775</h5>
                                    <div>
                                        <ul>
                                            <li>64 bits</li>
                                            <li>Super</li>
                                        </ul>
                                    </div>
                                </div>
                            </a>

                        </li>   

Jquery コード:

function search_filter() {
    $('#busqueda').click(function() {
        if ($(this).val() == "Buscar...") {
            $(this).val("");
        }
    }).blur(function() {
        if ($(this).val() == "") {
            $(this).val("Buscar...");
        }
    }).on('input', function() {
        busca = $(this).val();

        $("#prod_list li").each(function() {
            var elem = $(this).children('a');
            var reg = new RegExp(busca, "i");
            if (reg.test(elem.text())) {
                if ($(this).is(':hidden')) {
                    $(this).fadeIn('fast').css("display", "block");                    
                }

            } else {

                $(this).fadeOut('fast');
            }
        });
    });
}  
4

1 に答える 1

1

おそらく、#prod_list 内に li > a > div > div > ul > li があるためです。

そして、最後のliは失敗しています

if (reg.test(elem.text())) {

フェードアウトも同様です。これを行うだけで修正できます

$("#prod_list > ul > li").each(function() {

その代わり。

于 2013-11-04T18:23:07.447 に答える