部分未应用jQuery Mobile(Rails)

时间:2012-06-06 00:09:06

标签: ruby-on-rails jquery-mobile

尝试实现一个简单的滑块菜单。 jQuery Mobile在主页面上渲染得很好,但在菜单div上,没有应用jQuery Mobile。阅读所有相关的例子,但没有一个能解决我遇到的问题。任何反馈都非常感谢。

test.html.erb

<head>
<title>FB Style Menu</title>
<meta id="extViewportMeta" name="viewport" content="width=device-width, initial-     scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<link rel="stylesheet" href="css/jquery.mobile-1.0rc2.min.css" />
<link rel="stylesheet" href="css/main.css?v=31" />
<script type="text/javascript" src="js/jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="js/jquery.mobile-1.0rc2.min.js"></script>
<script type="text/javascript" src="test.js"></script>
</head> 

<div data-role="page" class="pages" id="home">
<div data-role="header">
    <a href="#"class="showMenu">Menu</a>
    <h1>FB Style Menu</h1>
</div><!-- /header -->

<div data-role="content">
    <p><strong>Note: You can swipe right/left to show/close menu.</strong></p>
</div>
</div>

<div id = "menu">
<h3>Menu</h3>
<ul>
    <li class="active"><a href="#home" class="contentLink">Home </a></li>
    <li><a href="#home" data-role = "button" class="contentLink">About </a></li>
    <li><a href="#home" class="contentLink">Portfolio </a></li>
    <li><a href="#home" class="contentLink">Contact </a></li>

</ul>
</div>

test.js

$(function(){
var menuStatus;

$("a.showMenu").click(function(){
    if(menuStatus != true){
    $(".ui-page-active").animate({
        marginLeft: "250px",
      }, 300, function(){menuStatus = true});
      return false;
      } else {
        $(".ui-page-active").animate({
        marginLeft: "0px",
      }, 300, function(){menuStatus = false});
        return false;
      }
});

$('.pages').live("swipeleft", function(){
    if (menuStatus){
    $(".ui-page-active").animate({
        marginLeft: "0px",
      }, 300, function(){menuStatus = false});
      }
});

$('.pages').live("swiperight", function(){
    if (!menuStatus){
    $(".ui-page-active").animate({
        marginLeft: "165px",
      }, 300, function(){menuStatus = true});
      }
});

$("#menu li a").click(function(){
    var p = $(this).parent();
    if($(p).hasClass('active')){
        $("#menu li").removeClass('active');
    } else {
        $("#menu li").removeClass('active');
        $(p).addClass('active');
    }
});

});

application.html.erb

<!DOCTYPE html>
<html>
<head>
  <title>fuseGap</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
    <script type="text/javascript">if (window.location.hash == '#_=_')window.location.hash = '';</script>
    <link rel="stylesheet" href="arc2theme.css" />
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile.structure-1.1.0.min.css" />
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
    <script src="http://connect.facebook.net/en_US/all.js"></script>
  <%= stylesheet_link_tag    "application", :media => "all" %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>

</head>
<body>
<%= yield %>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

您不需要将var p放在jQuery选择器语法中。

p.hasClass(....

应该足够好。

关于移动设备,我相信jQuery mobile会查找带有data-role = page的div,你的菜单div就在那之外。

尝试将data-role = page添加到菜单div。