【问题标题】:Rails 5, jQuery, add event to dynamically created itemsRails 5,jQuery,向动态创建的项目添加事件
【发布时间】:2016-12-05 12:56:32
【问题描述】:

我的解决方案有效,但我相信会有更好、更优雅的方法。任何想法都非常受欢迎。

问题是导航栏下拉菜单项有图标。我将图标和项目名称放在单独的跨度中,以便我可以分别设置它们的样式。我还用 div 包装了它们,因为如果悬停,我需要更改图标和列表项名称的背景颜色。

导航栏在下拉菜单中呈现链接:

      <ul class="dropdown-menu">
        <% @categories.each do |cat| %>
          <li>
            <%= link_to cat do %>
            <div class="main-cont"><span id="icon-cont"><i class="glyphicon glyphicon glyphicon-tag"></i></span><span id="name-cont"><%= cat[:name] %></span></div>
          </li>
          <% end %>
        <% end %>
      </ul>

jQuery 改变背景:

$(document).ready(function(){
  $('.main-cont').on('mouseover', function(){
    $(this).find('#icon-cont').css('background-color', 'yellow');
    $(this).find('#name-cont').css('background-color', 'yellow');
  });
  $('.main-cont').on('mouseout', function(){
    $(this).find('#icon-cont').css('background-color', '');
    $(this).find('#name-cont').css('background-color', '');
  });
});

所以它完成了这项工作,但尤其是 jQuery 部分有点笨拙(HTML 也远非“哇”)。有什么方法可以改善吗?谢谢!

【问题讨论】:

    标签: jquery html css ruby-on-rails


    【解决方案1】:

    当您在循环中创建具有相同 ID 的元素时,即 icon-contname-cont,它会创建重复的标识符,在 HTML 中标识符必须是唯一的。

    您可以使用纯 CSS 来实现它。

    .main-cont:hover  {
      background-color: yellow
    }
    <ul class="dropdown-menu">
      <li>
        <div class="main-cont"><span class="icon-cont">loren icon<i class="glyphicon glyphicon glyphicon-tag"></i></span><span class="name-cont">loren name</span>
        </div>
      </li>
     <li>
        <div class="main-cont"><span class="icon-cont">ipsum icon<i class="glyphicon glyphicon glyphicon-tag"></i></span><span class="name-cont">ipsum name</span>
        </div>
      </li>
    </ul>

    【讨论】:

    • 这种方式行不通,但如果我添加!important 以将背景添加到.icon-cont,则以前的方式可以,因为我为.icon-cont 设置了背景。但无论如何它要好得多。将尝试摆脱!important
    猜你喜欢
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 2018-12-05
    • 1970-01-01
    • 2020-03-24
    • 2023-03-06
    相关资源
    最近更新 更多