Фильтрация вопросов по количеству ответов - PullRequest
2 голосов
/ 30 июля 2009

(Вопрос jQuery о фильтрации содержимого в StackOverflow. Клянусь, это не относится к Meta!)

Вопрос
Я хочу использовать сценарий Greasemonkey для фильтрации вопросов на главной странице, страницах вопросов и без ответа. Прямо сейчас у меня есть решение для этого (ниже), но обработка занимает несколько секунд, и мне было интересно, есть ли лучший способ.

Фон
Если вы еще не взглянули на структуру домашней страницы, она очень похожа на следующую:
(упрощенно для вопросов)

<div class="question-summary"> 
    <div class="status">
       <div class="mini-counts">1</div>
       <div>answers</div>
    </div>
</div>

и это структура страницы с вопросами / без ответа:

<div class="question-summary"> 
    <div class="status">
       <strong>1</strong>
       answers
    </div>
</div>

Теперь мне нужно взять «1» (количество ответов) из каждого вопроса и проверить, превышает ли оно определенное число. В настоящее время я использую этот код:

function filterByAnswer(number)
{
    $.each($('.question-summary'), function()
    {
            // 
    if($('.status .mini-counts',this))
    {
        var answers = $('.status .mini-counts',this).text();
    }
    else if($('.status strong',this))
    {
        var answers = $('.status strong',this).text();
    }
    if(answers > number)
    {
        $(this).hide();
    }       
});
}

Мой вопрос: есть ли более быстрый способ сделать это? Я обнаружил, что это займет несколько секунд, и я хотел бы получить более быстрое решение.

Ответы [ 2 ]

1 голос
/ 30 июля 2009

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

function filterByAnswer(number) 
{
    $('.question-summary').filter( 
        function () { 
            var answers = $(this).find('.status').children('.mini-counts, strong').text(); 
            return parseInt(answers, 10) < number; 
        }).hide();       
}    
0 голосов
/ 30 июля 2009

Вы можете повторно использовать значения $('.status .mini-counts',this) и $('.status strong',this).

 var $miniCounts = $('.status .mini-counts',this);

 if($miniCounts)
    {
            var answers = $miniCounts.text();
    }
    else 
    {
       var $strong = $('.status strong',this);
       if($strong) {
            var answers = $strong.text();
       }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...