javascript - 在 Rails 中有没有办法为文本实现 image_tag 类型的鼠标悬停? JavaScript 和 CSS 解决方案不起作用

标签 javascript jquery html css ruby-on-rails

基本问题:我有一行文本,悬停时,我希望该文本更改为其他内容。基本的,对吧?让我感到困惑的是,有问题的文本存储在我的 Controller 中的散列中,我正在遍历它。

这是我的 PagesController 中哈希的较小版本:

def team_list
    return [ {
        name: "Employee 1",
        title: "Founder and CEO",
        secret_title: "Something Funny",
        image: "about-employee-color.jpg",
        alt_image: "about-employee-alt.jpg"
      },
      {
        name: "Employee 2",
        title: "Not Founder and CEO",
        secret_title: "Something Else Funny",
        image: "about-employee2-color.jpg",
        alt_image: "about-employee2-alt.jpg"
      } ]
end

然后在我看来(@team 定义为我的 PagesController 中的散列),我正在循环为每个人创建一个关于页面条目。

    <% @team.each do |member| %>
    <div class="about-team">
      <%= image_tag member[:image], :mouseover => member[:baby_pic] %>
      <%= image_tag member[:baby_pic], :style => "display:none;" %>
      <h2><%= member[:name] %></h2>
      <h4><%= member[:title] %></h4>
      <h4 style="display:none;"><%= member[:secret_title] %></h4>
    </div>
    <% end %>

我正在尝试看看是否有一个简单的解决方案,就像我的 image_tag :mouseover 一样,让我的标题在悬停时更改为 secret_titles。我首先尝试了 CSS,类似于此。但我不能只将该成员变量放入 CSS,因为它不存在于该循环之外。我想 JavaScript 也会以同样的方式出现。

    h4:hover { content:<%= member[:secret_title] %>; } 

无论如何,我希望得到的是我还没有遇到过的类似 text_tag 的东西,它具有与 image_tag 类似的 :mouseover 属性。

最佳答案

您可以使用 JQuery 功能来交换直接作为属性存储在 DOM 元素中的值,在本例中将是 divabout-team ,无需真正更改 Rails Controller 。

存储值:

<% @team.each do |member| %>
<div class="about-team" member-title="<%= member[:title] %>" secret-title="<%= member[:secret_title] %>">
  <%= image_tag member[:image], :mouseover => member[:baby_pic] %>
  <%= image_tag member[:baby_pic], :style => "display:none;" %>
  <h2><%= member[:name] %></h2>
  <h4><%= member[:title] %></h4>
</div>
<% end %>

交换值(JQuery 定义一次):

    $('.about-team h4').hover(
      function(){     //mouse enter
          $(this).html($(this).parent().attr('secret-title'));
      },    
      function(){     //mouse leave
          $(this).html($(this).parent().attr('member-title'));        
      }    
    );

API 文档中定义的 JQuery hover 事件将 2 个处理程序绑定(bind)到匹配的元素,因此您可以像上面的代码一样在鼠标悬停时执行交换逻辑。

JSFIDDLE:http://jsfiddle.net/VmqB7/4/

关于javascript - 在 Rails 中有没有办法为文本实现 image_tag 类型的鼠标悬停? JavaScript 和 CSS 解决方案不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21126636/

相关文章:

javascript - 如何在回发后保持 DIV 可见

javascript - 在 AngularJS 中使用 $http 服务发布多个数组

javascript - 如何在 Express 中使用 jsTree

html - 使用 100% 宽度时 Logo 太大

javascript - 无法在 Material UI TextField 中键入文本

asp.net - 如何使用 json 将复杂类型传递给 ASP.NET MVC Controller

javascript - AngularJS 拖放

javascript - window.opener 在 Internet Explorer 上未定义

javascript - 学习 Ajax 。如何在 json 响应上打印变量

jquery - Flexslider 图像在 Firefox 中非常轻微的错误移动