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 回答