jquery скрывает несколько строк на основе класса

#jquery #asp-classic #ado

#jquery #asp-classic #ado

Вопрос:

У меня есть вывод базы данных из набора записей в таблицу, подобную этой:

 Response.Write "<TR class=data>"
For i = 0 to rs.Fields.Count
if i < 4 then
    if i = 0 or i = 1 or i = 2 then
        response.Write "<td align=center>" amp; rs.Fields(i) amp; "</td>"
    else
        response.Write "<td align=center class="amp;rs.Fields(i)amp;"><div id=thisone>" amp; rs.Fields(i) amp; "</div></td>"
    end if
end if
Next
Response.write "</TR>"
  

Как вы можете видеть, я настроил имя класса, равное 4-му элементу в строке (в данном случае, имени пользователя). Что я хотел бы сделать, так это скрыть все строки с одинаковым именем пользователя, если конечный пользователь щелкает в любом месте строки.

пока что у меня есть это:

     <script>
var username;

$(document).ready(function(){

    $("TR.data").click(function () { 
       username = $(this).find('td:last').text();
       alert(username);

       $(this).each(function(object){
           if($(this).find('td:last').text() == username){
               object.hide();
           }
       });
    });   
});
</script>
  

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

Приветствуется любая помощь. Спасибо.

Ответ №1:

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

 $("TR.data").click(function () { 
   var username = $(this).find('td:last').text();

   $("TR.data:contains('" username "')").hide();

}); 
  

Комментарии:

1. Еще один отличный ответ. Я не знал о методе contains(). Очень признателен!

2. ах! новинка на сайте. я не знал как.

3. для тех, кто хочет сделать обратное (например: щелкнуть строку и заставить все ОСТАЛЬНЫЕ строки исчезнуть), вы можете использовать метод «not()». Вот пример, который я использовал: $ («TR.data»).not(«:содержит(» имя пользователя «)»).fadeOut(500);

Ответ №2:

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

  $('.yourclass').css('display', 'none');
  

Это позволит найти все элементы с заданным именем класса и применить к каждому из них стиль display: none.

Комментарии:

1. Идеально! Единственное, что мне пришлось изменить, это добавить .parent() перед css, потому что он скрывал только <td>, а не всю строку целиком. Определенно проще, чем то, что я пытался. Большое спасибо!

2. вместо того, чтобы выполнять parent() Я предпочитаю .closest(‘tr’), таким образом, вы всегда знаете, что будете скрывать строку, независимо от того, что было выбрано