0

我的应用程序的移动页面有一个带有 jQ​​uery Mobile 下拉选择菜单列表的标题,如下所示。

<span data-role="fieldcontain" id="category-dropdown">
  <select name="select-native-2" id="select-native-2" data-mini="true">
    <option value="<%= root_path %>">Home</option>
    <option value="<%= newest_path %>">New</option>    
    <option value="<%= group_path(Group.find(1)) %>">Group 1</option>
    <option value="<%= group_path(Group.find(2)) %>">Group 2</option>
    <option value="<%= group_path(Group.find(3)) %>">Group 3</option>
  </select>
</span>

我正在使用下面的 Javascript 导航到选定的页面。

<script type="text/javascript">
$(document).ready(function() {
  $("#select-native-2").change(function(){
    if ($(this).val()!='') {
      window.location.href=$(this).val();
    }
  });
});
</script>

我的问题是,当用户重定向到另一个页面时,选择菜单默认返回第一个选项(“主页”)。如何使选择菜单反映当前页面?

我的猜测是我需要

#1 标记哪个选项是“活动的”,然后

#2 确保通过 javascript 在选择菜单上激活它

做这两件事的最佳方法是什么?

我可以像下面那样做#1,但它很丑

<option value="<%= root_path %>" id="<%= "active" if params[:controller] == "links" && params[:action] == "index" %>">

至于#2,我不确定选择它的最佳方法是什么。

非常感谢您的意见!

4

2 回答 2

1

为什么不直接使用selected属性?

<span data-role="fieldcontain" id="category-dropdown">
  <select name="select-native-2" id="select-native-2" data-mini="true">
    <option value="<%= root_path %>">Home</option>
    <option value="<%= newest_path %>">New</option>    
    <option selected value="<%= group_path(Group.find(1)) %>">Group 1</option>
    <option value="<%= group_path(Group.find(2)) %>">Group 2</option>
    <option value="<%= group_path(Group.find(3)) %>">Group 3</option>
  </select>
</span>

这将使“第 1 组”成为页面加载时的选定选项。您只需要弄清楚哪个选项将获得此属性。但这在 Ruby 方面应该很容易做到。

于 2013-03-20T22:32:28.923 回答
0

只是为了添加到@Steve 的解决方案,我编写了一个帮助程序来帮助选择当前页面。

def is_selected?(action, name)
  if params[:controller] == "links" # this is the controller for my root and newest paths
    "selected" if params[:action] == action
  elsif params[:controller] == "groups"
    "selected" if @group.name == name
  end
end
于 2013-03-22T15:29:16.833 回答