我试图用jQuery隐藏表行而不是js为in this question。这是我放在标题中的脚本:
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>
...
这不起作用。这个问题是same as this,但我不能让我的工作。我做错了什么?
更新
根据答案编辑代码。但是这仍然没有用,虽然它在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>
...
更新
CDN通话中缺少结束</script>
;但现在整个表都被隐藏了;我正在添加该表的那一部分。再次感谢您的回答:
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>""")
答案 0 :(得分:3)
首先,您的HTML中有false
class
<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();
});
答案 1 :(得分:1)
您正在使用ID选择器:
$("#false").click(function() {
$("#hide").hide("slow");
});
当你想要一个类选择器时:
$(".false").click(function() {
$(".hide").hide("slow");
});