2011-10-27 15 views
0

我是新來的jquery,但我試圖學習。我正在使用一個在jsfiddle中工作得很好的下拉按鈕。但是,當我在我的rails 3應用程序中嘗試它時,它不起作用。 (當你點擊鏈接時沒有下降)。Rails 3:我的jQuery的下拉菜單不工作,導致其他js不工作

如果我刪除行$(「。menu」)。fixedMenu();並將其添加到像這樣的HTML。我難住爲什麼它不像jsfiddle的例子

<script> 
     $('document').ready(function(){ 
      $('.menu').fixedMenu(); 
     }); 
     </script> 

真的很感謝任何幫助或見解。

工作的jsfiddle:http://jsfiddle.net/rKaPN/32/

的application.js

(function ($) { 
$.fn.fixedMenu = function() { 
    return this.each(function() { 
     var menu = $(this); 
     $("html").click(function() { 
     menu.find('.drop-down').removeClass('drop-down'); 
     }); 
     menu.find('ul li > a').bind('click',function (event) { 
      event.stopPropagation(); 
     //check whether the particular link has a dropdown 
     if (!$(this).parent().hasClass('single-link') && !$(this).parent().hasClass('current')) { 
      //hiding drop down menu when it is clicked again 
      if ($(this).parent().hasClass('drop-down')) { 
      $(this).parent().removeClass('drop-down'); 
      } 
      else { 
      //displaying the drop down menu 
      $(this).parent().parent().find('.drop-down').removeClass('drop-down'); 
      $(this).parent().addClass('drop-down'); 
      } 
     } 
     else { 
      //hiding the drop down menu when some other link is clicked 
      $(this).parent().parent().find('.drop-down').removeClass('drop-down'); 

     } 
     }) 
    }); 
    } 
    $(".menu").fixedMenu(); 
    })(jQuery); 

$(function() { 
    $("div.post_form").hide(); 

    $("input[name$='post[category_id]']").click(function() { 


     $("div.post_form").hide(); 
     $("#extra").show("slow") 
    }); 
}); 

$(function(){ 
     $('a.tab_link').click(function(){ 
      $('a.tab_link').removeClass('active') 
      $(this).addClass('active') 
     }); 
     }); 

application_layout.html.erb

<!DOCTYPE html> 
    <html> 
    <head> 
     <title><%= title %></title> 
     <%= csrf_meta_tag %> 
     <!--[if lt IE 9]> 
     <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
     <![endif]--> 
     <%= stylesheet_link_tag 'blueprint/screen', :media => 'screen' %> 
     <%= stylesheet_link_tag 'blueprint/print', :media => 'print' %> 
     <%= stylesheet_link_tag 'token-input-facebook' %> 
     <!--[if lt IE 8]><%= stylesheet_link_tag 'blueprint/ie' %><![endif]--> 
     <%= stylesheet_link_tag 'custom', :media => 'screen' %> 
     <%= javascript_include_tag :defaults %> 


    </head> 

    <body style="<%= check_user %>"> 

    <header> 


    <div class="menu"> 
     <div class="container-margin"> 
     <ul> 
      <li><%= link_to "Home", root_path, :class => "single_link" %><span></span></a></li> 
      <li> <%= link_to "Profile", root_path, :class => "single_link" %><span></span></a></li> 
      <li> <%= link_to "Blog", root_path, :class => "single_link" %><span></span></a></li> 
      <li class="menu-right"> 
       <a href="#">More<span class="arrow"></span></a> 
       <!-- Drop Down menu Items --> 
       <ul> 
       <li><a href="http://www.google.co.in/reader">Reader Reader Reader</a></li> 
        <li><a href="https://sites.google.com">Sites</a></li> 
         <li><a href="http://groups.google.co.in">Groups</a></li> 
         <li><a href="http://www.youtube.com">YouTube</a></li> 
       </ul> 
      </li> 
     </ul> 
    </div> 
    </div> 


     <div id="header-two"> 
     <div class="container"> 
      <div id="logo"><%= link_to logo, root_path %></div> 
      <div id="search"> 
         <%= form_tag search_posts_path, :method => :get do %> 
         <%= submit_tag "", :name => nil, :class => "search-button" %> 
         <%= text_field_tag :q, params[:q], :class => "search-box round-3" %> 
        <% end %> 
      </div> 
     </div> 
     </div> 

    </header> 

custom.css

#header-two { 
    background:#fff; 
    height: 74px; 
    border-bottom: solid 1px #ececec; 
} 
.container-margin { 
    width: 1034px; 
    margin: 0 auto; 
    position: relative; 
} 
.menu{ 
position::absolute; 
top:0; 
left:0; 
width:100%; 
font:13px/27px Arial,sans-serif; 
color:#999; 
height:30px; 
background:blue; 
} 
.menu a:hover{ 
background-color:#676767; 
color:#CCCCCC; 
} 
.menu a{ 
text-decoration:none; 
padding:6px 8px 7px; 
color:#CCCCCC; 
outline:none; 
} 
.menu ul{ 
list-style:none; 
margin:0; 
padding:0 0 0 10px; 
} 
.menu ul li{ 
padding:0; 
float:left; 
} 
.menu ul li.menu-right{ 
float:right; 
} 

.menu ul li ul li{ 
padding:0; 
float:none; 
margin:0 0 0 0px; 
width:100%; 
} 
.menu ul li ul{ 
position:absolute; 
right: 0px; 
border:1px solid #C3D1EC; 
/*box-shadow*/ 
-webkit-box-shadow:0 1px 5px #CCCCCC; 
    -moz-box-shadow:0 1px 5px #CCCCCC; 
     box-shadow:0 1px 5px #CCCCCC; 
margin-top:-1px; 
display:none; 
padding:0px 16px 0px 0; 
} 
.drop-down ul{ 
display:block !important; 
position:relative; 
} 
.drop-down a{ 
background-color:white; 
border:1px solid #C3D1EC; 
border-bottom:0; 
/*box-shadow*/ 
-webkit-box-shadow:0 -1px 5px #CCCCCC; 
    -moz-box-shadow:0 -1px 5px #CCCCCC; 
     box-shadow:0 -1px 5px #CCCCCC; 
display:block; 
height:29px; 
padding:0 8px 0 8px; 
position:relative; 
z-index:1; 
color:#3366CC; 
} 
.drop-down a:hover{ 
background-color:white; 
color:#3366CC; 
} 
.drop-down ul a:hover{ 
background-color:#e4ebf8; 
} 
.drop-down ul a{ 
border:0 !important; 
/*box-shadow*/ 
-webkit-box-shadow:0 0 0 #CCCCCC; 
    -moz-box-shadow:0 0 0 #CCCCCC; 
     box-shadow:0 0 0 #CCCCCC; 
border:0; 
width:100%; 
} 

.arrow { 
border-color:#C0C0C0 transparent white; 
border-style:solid dashed dashed; 
margin-left:5px; 
position:relative; 
top:10px; 
} 
.mid-line{ 
background-color:#FFF; 
border-top:1px solid #e5e5e5; 
font-size:0; 
} 
+0

這是一個普通的jQuery問題 - 與Rails無關。 – Tom

回答

0

function($) {...}是一個函數。 $(function($) {...})不是。如果您希望在文檔加載完成時運行它,最後應該擦除(jQuery)(同樣,在這種情況下,函數聲明中的參數$也是冗餘的)。如果你想在腳本加載時運行它,那麼只需擦除初始的$

+0

嗨我試過你說的但它仍然不工作,我不得不調整fixedMenu()行到我的HTML,任何想法爲什麼它不工作像js小提琴的例子? –

+0

你可以發佈你的確切代碼(與仍然不能正常工作的變化)嗎? – Tom

0

刪除第一個$

它應該是 「(函數(){」 而不是 「$(函數(){」