正在运行的jQuery代码在条件内不起作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正在运行的jQuery代码在条件内不起作用相关的知识,希望对你有一定的参考价值。
我想设置一个元素内容,以防为空。html.erb
代码如下:
<div class="comments-section">
<% if micropost.comments.any? %>
<ol id="comments_micropost-<%= micropost.id %>">
<% micropost.comments.each do |comment| %>
<%= render comment %>
<% end %>
</ol>
<% end %>
</div>
我要设置内容的元素是<div class="comments-section">
。当微博尚未发表评论时,其内容为空。我在create.js.erb
中使用javascript处理注释的创建动作:我写了两行代码,具体取决于micropost.comments
是nil还是nil:
案例1:微博尚未发表评论(micropost.comments.any?
为假):
$('#micropost-<%= @micropost.id %>').find('.comments-section').html("<%= escape_javascript(render partial: 'comments/first_comment') %>");
案例2:micropost已经发表评论(micropost.comments.any?
是真的):
var comments = $('ol#comments_micropost-<%= @micropost.id %>');
comments.append('<%= escape_javascript(render partial: @comment) %>');
这两个代码段在单独使用时有效。但是,在以下条件下与案例2一起插入时,案例1的代码不起作用:
if (comments == null) {
$('#micropost-<%= @micropost.id %>').find('.comments-section').html("<%= escape_javascript(render partial: 'comments/comments') %>");
}
else {
comments.append('<%= escape_javascript(render partial: @comment) %>');
};
我不明白为什么if (comments == null)
的代码不执行。我也尝试了if (comments == undefined)
和if (!comments)
,但没有任何改进。相反,条件的else
部分已成功执行。
JavaScript将不存在的DOM元素视为带有length = 0
的对象。可以通过使用Web浏览器控制台,编写DOM元素并检查控制台输出来验证这一点。选择一个无注释的微博(例如带id = 304
的微博):micropost.comments.any?
为假,div.comments-section
内部的所有内容都不会出现在文档中。打开控制台,并在提示符下输入以下代码:
以上是关于正在运行的jQuery代码在条件内不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Jquery .removeClass 在 setTimeout 内不起作用