Как скрыть строку таблицы с помощью jQuery? - PullRequest
2 голосов
/ 08 октября 2011

Я пытаюсь скрыть строку таблицы с помощью jQuery вместо js как в этом вопросе . Это скрипт, который я положил в шапку:

self.response.out.write("""
    <html>
    <head>
    <link type="text/css" rel="stylesheet" href="/stylesheets/main.css" /> 
    <title>User Admin Page</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js">
    <script>
    $(document).ready(function() {
        $("#false").click(function() {
        $("#hide").hide("slow");
    });
});
</script>
<body>
""")

А вот HTML:

...
<tr class="hide">
 <td>
  ...
   <a class="false" href="/useradminpage?main_id=%s&display=false"><span class="small">(hide)</span></a>
  </td>
 </tr>
</div>
...

Это не работает. И этот вопрос такой же, как этот , но я не могу заставить мою работу. Что я делаю не так?

Обновление

Отредактированный код согласно ответам. Но это все еще не работает, хотя и работает в jsfiddle:

         <html><head>
         <link type="text/css" rel="stylesheet" href="/stylesheets/main.css" /> 
         <title>User Admin Page</title>
         <script  src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js">

<script>


 $(document).ready(function() {

     $("a.false").click(function(e) {
     $(".hide").hide("slow");
     e.preventDefault();
          });

 });   </script> </head>
         <body>
 ...

Обновление

Закрытие </script> отсутствовало в вызове CDN; но теперь вся таблица скрыта; Я добавляю этот раздел таблицы. Еще раз спасибо за ответы:

    self.response.out.write("""<table class="mytable">
    <tr class="head">
    <th  width="80%">links</th><th>edit tags</th>
    </tr>    
    """)        

    query = Main.all()
    query.filter("owner", user)
    query.filter("display", True)
    query.order("-date")
    cursor = self.request.get("cursor")
    if cursor: query.with_cursor(cursor)
    e = query.fetch(100)
    cursor = query.cursor()

    for item in e:
        main_id = item.key().id()
        self.response.out.write("""
        <tr class="hide">
        <td><a href="%s" target="_blank">%s</a><span class=small> (%s) </span><br />
        <span class=small>%s</span>
        <a href="/edit?main_id=%s"><span class="small">(edit)</span></a>
        <a class="false" href="/useradminpage?main_id=%s&display=false"><span class="small">(hide)</span></a>
        <a href="/comment?main_id=%s"><span class="small">(comments)</span></a></td>
        <td><a href="/tc?url=%s&main_id=%s&user_tag_list=%s" title="edit tags">%s</a>
        </td>
        </tr>
        """ % tuple([item.url, item.title, urlparse(item.url).netloc,
        f1.truncate_at_space(item.pitch), main_id, main_id, main_id,
        item.url, main_id, (", ".join(item.tag_list)),
        (", ".join(item.tag_list)),]))


    self.response.out.write("""</tbody></table>""")    

Ответы [ 2 ]

3 голосов
/ 08 октября 2011

Во-первых, у вас есть false как class в вашем HTML

<a class="false" href=...

и ID в вашем скрипте

$("#false").click(function()...

Ваш hide также id и должен быть class.

Вот исправление: http://jsfiddle.net/A6jKm/1/


РЕДАКТИРОВАТЬ

теперь он скрывает всю таблицу

Это потому, что все ваши строки генерируются с тем же классом hide, что ивидно здесь

for item in e:
    main_id = item.key().id()
    self.response.out.write("""
    <tr class="hide">

Чтобы обойти это, я немного изменил код для поиска прямого родителя выбранного элемента:

$("a.false").click(function(e){
    $(this).parents('tr').hide();
    e.preventDefault();
});

Обновленный пример: http://jsfiddle.net/A6jKm/3/


РЕДАКТИРОВАТЬ 2

Возможно, closest будет работать лучше.

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

$("a.false").click(function(e){
    $(this).closest('tr.hide').hide();
    e.preventDefault();
});

Пример 3: http://jsfiddle.net/A6jKm/4/

1 голос
/ 08 октября 2011

Вы используете селектор идентификаторов:

$("#false").click(function() {
    $("#hide").hide("slow");
});

когда вы хотите селекторы класса:

$(".false").click(function() {
    $(".hide").hide("slow");
});

Демо: http://jsfiddle.net/ambiguous/sw7Tr/

...