2

重複するリストアイテムを削除するための次のjQueryコードがあります。より良い/より速いアプローチはありますか?http://jsfiddle.net/Lijo/Hb28u/16/

HTML

   <div style="width: 100px">
        <ul>
            <li style="background-color: Red">A</li>
            <li style="background-color: Red">B</li>
            <li style="background-color: Orange">B</li>
            <li style="background-color: Red">C</li>
            <li style="background-color: Orange">C</li>
            <li style="background-color: Yellow">C</li>
            <li style="background-color: Red">D</li>
        </ul>
    </div>
    <input id="Submit1" type="submit" value="submit" class="submitButton" />

jQuery

        $('.submitButton').click(function (e) {
            alert('Begin');
            var previousVal = 'Initial';

            $('ul li').each(function (i, item) {
                var currentVal = $(item).text();
                if (currentVal == previousVal) {
                    $(item).remove();
                }
                previousVal = currentVal;
            });

            alert('End');
            return false;
        }
        );
4

1 に答える 1

4

私はこのようにしますが、それが速いかどうかはテストしていません。どちらも私にとっては速いようです。

 var seen = {};
$('ul li').each(function() {
    var txt = $(this).text();
    if (seen[txt])
        $(this).remove();
    else
        seen[txt] = true;
});
    return false;
}
);

これは、実行にかかる時間を示す私のソリューションのフィドルです。http://jsfiddle.net/54cdR/

于 2013-02-18T16:02:01.623 に答える