如何切换 post 和 link 的评论
How to toggle comments of a post with a link
我想像 Facebook 一样使用简单的 link 来切换(与 Facebook 显示和隐藏不同)post 的评论。但是,作为我的应用程序中通过迭代获得的 post 列表,每个 post 显然可以:
将评论包含在 div
中,与所有其他 post 的评论共享相同的 id
或 class
将注释包含在 div
元素中,并使用(例如)id
的 id
生成唯一的 id
或 class
58=]
在第一种情况下,我无法使用 link 及其 id
或 class
来切换 jQuery 只有属于一个 [=58= 的评论]:我会切换所有 post 的评论。不过可能有一个解决方案:忘掉 link 并使用包含注释的 div
的 div
父级来切换它:
<div id="comments-parent">
<%= link_to "Show/hide comments", "#", id="comments-link" %>
<ol id="comments">
<% post.comments.each do |comment| %>
<li id="<% comment.id %>">
<span class="comment-content"><%= comment.content %></span>
</li>
<% end %>
</ol>
</div>
有了 jQuery 我可以做这样的事情:
$('#comments').hide();
$('#comments-parent').click(function() {
$(this).children('#comments').toggle();
});
这个解决方案太糟糕了...点击一个非常大的区域会切换评论。
第二种情况,<ol id="comments-<%=post.id %>">
,可能是解决方案:
$('#comments-all').hide();
$('#comment-link').click(function() {
$('#comments-1').toggle();
});
但是我不知道如何实现它,或者如果有可能实现它,那就是如何将关于 "all ids
starting with comments-
" 或最重要的是关于特定 [的信息传递给 jQuery =16=].
你非常接近我会做的。但是,您可以像这样将它绑定到 link:
$('.toggleLink').on('click', function() {
$(this).closest('.post').find('.comments').toggle();
});
Here 是我认为你想要做的一个例子。
之所以可行,是因为使用了 this
,它是 javascript 中基于上下文的变量。在这种特殊情况下,this
指的是触发点击事件的 link 元素。所以从那里我们可以访问 toggle
的正确周围元素
我想像 Facebook 一样使用简单的 link 来切换(与 Facebook 显示和隐藏不同)post 的评论。但是,作为我的应用程序中通过迭代获得的 post 列表,每个 post 显然可以:
将评论包含在
div
中,与所有其他 post 的评论共享相同的id
或class
将注释包含在
div
元素中,并使用(例如)id
的id
生成唯一的id
或class
58=]
在第一种情况下,我无法使用 link 及其 id
或 class
来切换 jQuery 只有属于一个 [=58= 的评论]:我会切换所有 post 的评论。不过可能有一个解决方案:忘掉 link 并使用包含注释的 div
的 div
父级来切换它:
<div id="comments-parent">
<%= link_to "Show/hide comments", "#", id="comments-link" %>
<ol id="comments">
<% post.comments.each do |comment| %>
<li id="<% comment.id %>">
<span class="comment-content"><%= comment.content %></span>
</li>
<% end %>
</ol>
</div>
有了 jQuery 我可以做这样的事情:
$('#comments').hide();
$('#comments-parent').click(function() {
$(this).children('#comments').toggle();
});
这个解决方案太糟糕了...点击一个非常大的区域会切换评论。
第二种情况,<ol id="comments-<%=post.id %>">
,可能是解决方案:
$('#comments-all').hide();
$('#comment-link').click(function() {
$('#comments-1').toggle();
});
但是我不知道如何实现它,或者如果有可能实现它,那就是如何将关于 "all ids
starting with comments-
" 或最重要的是关于特定 [的信息传递给 jQuery =16=].
你非常接近我会做的。但是,您可以像这样将它绑定到 link:
$('.toggleLink').on('click', function() {
$(this).closest('.post').find('.comments').toggle();
});
Here 是我认为你想要做的一个例子。
之所以可行,是因为使用了 this
,它是 javascript 中基于上下文的变量。在这种特殊情况下,this
指的是触发点击事件的 link 元素。所以从那里我们可以访问 toggle