问题
I don't know what's going on here..I'm trying to add a slidetoggle on my menu .. seems very simple .. I've tried to simplify this to try and find the problem (meaning I've taken all the links out and extra jquery, to only have that bottom example - the paragraph at the end) but I don't know what the error is.. (other that it doesn't do anything)
Includes:
<script type="text/javascript" src="/raceday/Scripts/jquery-1.4.2.min.js"></script>
The script:
<script type="text/javascript">
$("button").click(function() {
$("p").slideToggle("slow");
});
The HTML:
<div class="ttl-area">
<h2 class="ttl-account"><span>Account</span></h2>
</div>
<div class="account-area">
<div class="login-holder">
<p><strong>Welcome, <%= ViewModel.Profile.Name.First %></strong></p>
<ul class="account-links">
<span id="loginTitle">User Options</span><br /><br />
<li>
<%= Html.ActionLink<EventController>( x => x.List(), "All Events" )%>
</li>
<li>
<%= Html.ActionLink<MyEventsController>( x => x.List(), "My Events" )%>
</li>
<li>
<%= Html.ActionLink<AccountController>( x => x.Edit(), "My Profile" )%>
</li>
<li>
<%= Html.ActionLink<ClubController>( x => x.List(), "All Clubs" )%>
</li>
<li>
<%= Html.ActionLink<MyClubsController>( x => x.List(), "My Clubs" )%>
</li>
<li>
<%= Html.ActionLink<AccountController>( x => x.ChangePassword(), "Change My Password" )%>
</li>
<li>
<%= Html.ActionLink<DependantController>( x => x.List(), "My Dependants" ) %>
</li>
</ul>
</div>
<% if ( ViewModel.Profile.HasOrganizerInfo ) { %>
<div class="login-holder">
<ul class="account-links">
<span id="loginTitle">Organizer Details</span><br /><br />
<li>
<%= Html.ActionLink<AccountController>( x => x.Organizer(), "Organizer Details" )%>
</li>
<li>
<%= Html.ActionLink<EventController>( x => x.Edit( default(int?) ), "Post An Event" )%>
</li>
<li>
<%= Html.ActionLink<EventAdminController>( x => x.List(), "Events Created By Me" ) %>
</li>
<li>
<%= Html.ActionLink<ClubController>( x => x.Edit( default( int? ) ), "Create A Club" )%>
</li>
<li>
<%= Html.ActionLink<ClubAdminController>( x => x.List( ), "Clubs Created By Me" )%>
</li>
<!-- if ( ViewModel.Profile.IsAdministrator ) { -->
<li>
<%= Html.ActionLink<EventReportController>( x => x.List(), "Event Report" ) %>
</li>
<!-- } -->
</ul>
</div>
<% } %>
<% if ( ViewModel.Profile.HasTimerInfo ) { %>
<div class="login-holder">
<ul class="account-links">
<span id="loginTitle">Timer Details</span><br /><br />
<li>
<%= Html.ActionLink<AccountController>( x => x.Timer(), "Timer Details" )%>
</li>
<li>
<%= Html.ActionLink<EventTimerController>( x => x.List(), "Events Timed By Me" ) %>
</li>
</ul>
</div>
<% } %>
<ul class="account-links">
<% if ( ( !ViewModel.Profile.HasOrganizerInfo ) || ( !ViewModel.Profile.HasTimerInfo) ) { %>
<span id="loginTitle">Additional Options</span><br /><br />
<% } %>
<% if ( !ViewModel.Profile.HasTimerInfo ) { %>
<li>
<%= Html.ActionLink<AccountController>( x => x.Timer(), "I Time Events" )%>
</li>
<% } %>
<% if ( !ViewModel.Profile.HasOrganizerInfo ) { %>
<li>
<%= Html.ActionLink<AccountController>( x => x.Organizer(), "I Organize Events" )%>
</li>
<% } %>
<li><%= Html.ActionLink<AccountController>( x => x.Logout(), "Log Out" ) %></li>
</ul>
</div>
<button>Hide 'em</button>
<p>Hiya</p>
<p>Such interesting text, eh?</p>
回答1:
Your code needs to be in a document.ready
handler so the $("button")
selector finds elements to bind click
handlers to.
$(function() {
$("button").click(function() {
$("p").slideToggle("slow");
});
});
If the DOM isn't ready yet, the <button>
elements may not be added/ready either, which means that $("button")
will still bind to all elements it finds...but it won't find them, resulting in a total lack of behavior, which is what you're seeing.
回答2:
you need to wrap it a load method:
$(document).load(function(){
$("button").click(function() {
$("p").slideToggle("slow");
});
})
回答3:
tried something like this?
jQ = jQuery.noconflict();
jQ("button").click(function() {
jQ("p").slideToggle("slow");
});
maybe asp is messing with your $
来源:https://stackoverflow.com/questions/3857608/jquery-not-even-being-called