jquery - Bootstrap 下拉按钮菜单消失

标签 jquery html css ruby-on-rails twitter-bootstrap

我将 Bootstrap 3 与 Ruby on Rails(Rails 教程示例应用程序)结合使用。在我的应用程序中,用户可以喜欢(“品味”)微博(“流行”)。当帖子上的点赞数超过零时,我希望“# likes”显示按钮在下拉菜单中显示点赞用户的 Gravatar 图标。我或多或少地工作。但是,当我单击按钮并打开下拉菜单时,它会在几秒钟内自动关闭。我希望它保持打开状态,直到用户单击其中一个缩略图或页面上的其他位置(或再次单击按钮)。我看过的所有示例(都没有这个问题)都没有以这种方式使用图像缩略图,并且通常在下拉列表中只有有序列表。我这样做是否正确,还是有更好的方法?

此外,在实现 javascript/jQuery 方面,我完全是个菜鸟。我理解代码,但我永远无法弄清楚我需要把它放在哪里以及我需要提及/要求它以使我的代码正常工作的地方。因此,如果有针对此问题的 javascript/jQuery 修复程序,请让我确切知道它需要去哪里。

注意:这与之前提出的另一个问题不同,在该问题中,当您单击下拉菜单时,它会消失。如果我很快,我可以单击缩略图并访问链接就好了。问题是菜单通常会在几秒钟后消失,然后我才能点击任何东西(当我的光标在上面时)。这在移动设备上尤其令人沮丧,因为下拉菜单总是在您即将点击缩略图时关闭。

_micropost.html.erb

<li id="micropost-<%= micropost.id %>">
  <%= link_to gravatar_for(micropost.user, size: 50), micropost.user %>
  <span class="user"><%= link_to micropost.user.name, micropost.user %></span>
  <span class="content">
    <%= micropost.content %>
    <%= image_tag micropost.picture.url if micropost.picture? %>
  </span>

  <span class="timestamp">
    Popped <%= time_ago_in_words(micropost.created_at) %> ago.
    <span class="dropdown">
      <% if micropost.likers(User).count == 0 %>
        <div id="like">
          <%= pluralize(micropost.likers(User).count, "savor", "savors") %>
        </div>
      <% else %>
        <div class="btn-group"> //button dropdown
          <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" data-target="#" aria-haspopup="true" aria-expanded="false">
            <%= pluralize(micropost.likers(User).count, "savor", "savors") %>
            <span class="caret"></span>
          </button>
          <div class="user_avatars dropdown-menu" aria-labelledby="dropdownMenu1">
            <% micropost.likers(User).each do |user| %>
              <%= link_to gravatar_for(user, size: 30), user %>
            <% end %>
          </div>
        </div>
      <% end %>

      <% if current_user.likes?(micropost) %>
        <%= content_tag(:div, "Savored", class: "btn btn-xs btn-primary", disabled: true) %>
      <% elsif (current_user != micropost.user) %>
        <%= link_to 'Savor', micropost, action: :update, method: :put, class: "btn btn-xs btn-primary" %>
      <% else %>
      <% end %>
      <% if current_user?(micropost.user) %>
        <%= link_to "delete", micropost, method: :delete,
                                         data: { confirm: "You sure?" } %>
      <% end %>
    </span>
  </span>
</li>

来自 custom.css.scss

.user_avatars {
  overflow: auto;
  margin-top: 10px;
  .gravatar {
    margin: 1px 1px;
  }
  a {
    padding: 0;
  }
}

提前致谢。

最佳答案

明白了,post表单设置为每5000毫秒刷新一次,所以它一直关闭菜单。将其更改为 30000(30 秒),一切正常。

罪魁祸首 (_feed.html.erb)

<% if @feed_items.any? %>
  <ol class="microposts" id="refreshable">
    <%= render @feed_items %>
  </ol>
  <%= will_paginate @feed_items %>
<% end %>

<!--make feed refreshable -->
<script>
  setInterval( function() {
    $("#refreshable").load(location.href+" #refreshable>*", "");
  }, 30000);
</script>

关于jquery - Bootstrap 下拉按钮菜单消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36098405/

相关文章:

javascript - SVG 图标只变形一次,不会变形回来

javascript - 用从某个 URL 检索到的数据替换整个 html-body 内容

javascript - 使用 jQuery 和 Cordova 使用 sqlite 自动完成

php - 需要帮助显示当前 mysql 记录并以 php 形式进行修改

html - 无法弄清楚如何在 div 中并排放置图像和文本并保持响应,包括 fiddle

css - 如何使用 LESS 使用 Twitter Bootstrap 创建流畅的语义布局?

javascript - 删除 Javascript 中的子数组项

javascript - 使动画变慢(jQuery)

jQuery 将 css 添加到未排序列表中的少数列表项

html - :target not working on previous element