2013-03-20 76 views
0

我的應用程序的移動頁面有一個包含jQuery Mobile下拉列表的選擇菜單列表,如下所示。在jQuery 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> 

我的問題是,當用戶重定向到另一個頁面時,選擇菜單默認回到第一個選項(「Home」)。我如何使選擇菜單反映當前頁面?

我的猜測是,我需要

#1標誌,它的選擇是 「積極的」,然後

#2確保已通過JavaScript在selectmenu激活。

做這兩件事的最好方法是什麼?

我可以爲低於1做#,但它是很醜陋

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

至於#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方面應該很容易。

+0

謝謝@Steve,這是完美的。你能通過ruby來擴展嗎?我正在考慮在'value'和'selected value'之間的if/else會非常混亂。有沒有更好的方法來做到這一點? – umezo 2013-03-21 14:10:13

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 
相關問題