Что делает метод jQuery .filter ()? - PullRequest
0 голосов
/ 27 мая 2011

Я использовал следующий код:

var td = $( '#job-tbody' ).find( 'td[class=status]' ).filter( '#' + object.id );

Проблема в том, что при повторном вызове функции (содержащей эту строку кода) во второй раз также возвращаются ранее сопоставленные результаты.Почему?

Согласно документации, он создает новый объект jquery, который содержит отфильтрованный результат.


Это была проблема с живым (JQuery) событием ... когда я добавлял запрос,Живые события снова и снова ... ненужные огни ...

Ответы [ 2 ]

1 голос
/ 27 мая 2011

Filter уменьшает набор объектов jQuery только до тех, которые в данном случае соответствуют селектору. Поскольку вы сопоставляете идентификатор, он должен возвращать не более одного совпадающего элемента.

РЕДАКТИРОВАТЬ : Убедитесь, что вы отключили кэширование в запросе AJAX - возможно, вы получаете данные кэшированного запроса либо с клиента, либо с сервера, в зависимости от того, как настроено ваше кэширование.

$.ajax({
     url: '/Helper/GetAllJobs',
     type: 'post',
     cache: false, // <-- add this
     ...
0 голосов
/ 27 мая 2011

Функция .filter() - Сократить набор соответствующих элементов до тех, которые соответствуют селектору или проходят тест функции.


Рассмотрим страницу с простым списком:

Мы можем применить этот метод к набору элементов списка:

 $('li').filter(':even').css('background-color', 'red');

Результатом этого вызова является красный фон для элементов 1, 3 и 5, поскольку они соответствуют селектору (напомним, что:четное и: нечетное использование индексации на основе 0).

ПРИМЕР

<!DOCTYPE html>
<html>
<head>
  <style>
  div { width:60px; height:60px; margin:5px; float:left;
        border:2px white solid;}
  </style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <div></div>

  <div class="middle"></div>
  <div class="middle"></div>
  <div class="middle"></div>
  <div class="middle"></div>

  <div></div>
<script>

    $("div").css("background", "#c8ebcc")
            .filter(".middle")
            .css("border-color", "red");
</script>

</body>
</html>

ВЫХОД Это выделит поля с красной рамкой, которыев середине.Это означает, что левые и правые поля не будут выделены.

...