【问题标题】:Hide/Show Div Effect - Ruby on Rails 2隐藏/显示 div 效果 - Ruby on Rails 2
【发布时间】:2009-11-18 15:37:41
【问题描述】:

在 rails 2 中创建隐藏和显示效果的最佳方法是什么。是使用 JQuery 类型的解决方案,还是内置更好、更好或更容易的东西?

【问题讨论】:

    标签: jquery ruby-on-rails css ruby show-hide


    【解决方案1】:

    最简单的方法是在视图中使用link_to_function:

    <%= javascript_include_tag :defaults %>
    
    <%= link_to_function "toggle", "$('thing_#{@thing.id}').toggle()" %>
    
    <p id="thing_<%= @thing.id %>">
      <b>Body:</b>
      <%=h @thing.body %>
    </p>
    

    另一种方法是使用 RJS,但这在很大程度上取决于您的应用程序的方式。这样,您必须设置控制器以查找 RESTful 操作之外的自定义操作,或者让现有操作查找 XHR 请求(使用“if request.xhr?”)

    RJS 非常简单:

    page["thing_#{@thing.id}"].toggle
    

    就个人而言,我会说除了 $(element).toggle() 之外的任何东西都应该在视图之外进入它自己的 RJS,因为视图应该大部分没有逻辑,但可能有很多对此意见不一。

    至于 javascript 框架,除非我正在做一些真正需要原型/scriptaculous 中不可用的东西,否则为了简单起见,我将坚持使用默认值。

    【讨论】:

    • 优秀的答案,这既优雅又简单。谢谢你。
    【解决方案2】:

    Rails 捆绑了 Prototype/Scriptaculous javascript 库,但是否要使用它们取决于您。最后,您必须使用某种 Javascript,Rails 没有什么特别的内置功能可以神奇地为您做到这一点。

    我个人推荐jQuery——我发现它学起来更快,更强大和可扩展。

    【讨论】:

    • 以 30 秒的速度击败我几乎相同的帖子。
    【解决方案3】:
    $('#elementid').hide();
    $('#elementid').show();
    $('.elementClassname').show();
    $('.elementClassname').hide();
    

    你也可以给出参数

    $('.elementClassname').show('slow');
    $('.elementClassname').show('normal');
    $('.elementClassname').show('fast);
    

    也可以是数值

    $('.elementClassname').show(600);
    

    你也可以使用切换

    $('.elementClassname').slideToggle();
    

    【讨论】:

      【解决方案4】:

      JQuery is an excellent choice,无论在何种平台上,在 Ruby 上的效果都与在 ASP.NET/MVC 上一样好

      【讨论】:

      • 有没有办法将默认状态设置为隐藏?
      • 显示:无;可见性:隐藏?
      猜你喜欢
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多