jQuery在aspx页面中未正确显示
我试图让这个函数在一个aspx页面中工作,但我过得很糟糕。基本上,它在常规HTML页面中工作正常,但在aspx页面中,当单击按钮时,您所能看到的只是顶部的一小部分,有时(每5次+单按钮单击和每双击一次)消息会像应该的那样显示和消失。我错过了什么?它会不会被绑在后防线上 在aspx页面中使用的代码jQuery在aspx页面中未正确显示,jquery,asp.net,visual-studio-2010,Jquery,Asp.net,Visual Studio 2010,我试图让这个函数在一个aspx页面中工作,但我过得很糟糕。基本上,它在常规HTML页面中工作正常,但在aspx页面中,当单击按钮时,您所能看到的只是顶部的一小部分,有时(每5次+单按钮单击和每双击一次)消息会像应该的那样显示和消失。我错过了什么?它会不会被绑在后防线上 在aspx页面中使用的代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="checkTest.aspx.cs" Inherits="WebApplica
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="checkTest.aspx.cs" Inherits="WebApplication2.checkTest" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
$("#Button1").click(function () {
$(".message").stop(true,true).slideToggle().fadeOut(6000);
});
});
</script>
<style type="text/css">
.message{height:70px;display:none;}
.noChangesMessage{width:84px;padding:8px 8px; background:#535353; -webkit-border-radius:5px; -moz-border-radius:5px; border-radius:5px; color:white;text-align:center;}
.tipEnd{width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px solid #535353;margin:0 auto;}
</style>
</head>
<body>
<form id="form1" runat="server">
<br /><br /><br />
<div>
<div style="width:100px">
<div style="height:70px">
<div style="margin-bottom:5px;" class="message">
<div class="noChangesMessage">No changes were made!</div>
<div class="tipEnd"></div>
</div></div>
<div style="">
<asp:Button ID="Button1" runat="server" Text="Save Changes" />
</div>
</div>
</div>
</form>
</body>
</html>
$(函数(){
$(“#按钮1”)。单击(函数(){
$(“.message”).stop(true,true).slideToggle().fadeOut(6000);
});
});
.消息{高度:70px;显示:无;}
.noChangesMessage{宽度:84px;填充:8px 8px;背景:#535353;-webkit边框半径:5px;-moz边框半径:5px;边框半径:5px;颜色:白色;文本对齐:中心;}
.tipEnd{宽度:0;高度:0;边框左侧:10px实心透明;边框右侧:10px实心透明;边框顶部:10px实心#53535353;边距:0自动;}
没有进行任何更改!
通过查看amit_g的源代码查看我的代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
$("#Button1").click(function () {
$(".message").stop(true,true).slideToggle().fadeOut(6000);
});
});
</script>
<style type="text/css">.
.message{height:70px;display:none;}
.noChangesMessage{width:84px;padding:8px 8px; background:#535353; -webkit-border-radius:5px; -moz-border-radius:5px; border-radius:5px; color:white;text-align:center;}
.tipEnd{width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px solid #535353;margin:0 auto;}
</style>
</head>
<body>
<form method="post" action="checkTest.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMjA0OTM4MTAwNGRkU+SP3bu4QJNH9S9XtdwPbEE8YODY/YlkotOt6l692s8=" />
</div>
<div class="aspNetHidden">
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgKroLr3AwKM54rGBtLTfCTwYmYnb6l8tnp5jtojhvORYMJ6bPzAI+qbaDlU" />
</div>
<br /><br /><br />
<div>
<div style="width:100px">
<div style="height:70px">
<div style="margin-bottom:5px;" class="message">
<div class="noChangesMessage">No changes were made!</div>
<div class="tipEnd"></div>
</div></div>
<div style="">
<input type="submit" name="Button1" value="Save Changes" id="Button1" class="Button1" /></div>
</div>
</div>
</form>
</body>
</html>
$(函数(){
$(“#按钮1”)。单击(函数(){
$(“.message”).stop(true,true).slideToggle().fadeOut(6000);
});
});
.
.消息{高度:70px;显示:无;}
.noChangesMessage{宽度:84px;填充:8px 8px;背景:#535353;-webkit边框半径:5px;-moz边框半径:5px;边框半径:5px;颜色:白色;文本对齐:中心;}
.tipEnd{宽度:0;高度:0;边框左侧:10px实心透明;边框右侧:10px实心透明;边框顶部:10px实心#53535353;边距:0自动;}
没有进行任何更改!
试试这个:
$("#<%= Button1.ClientID %>").click(function () {
$(".message").stop(true,true).slideToggle().fadeOut(6000);}
);
$(“#”)。单击(函数(){
$(“.message”).stop(true,true).slideToggle().fadeOut(6000);}
);
这与asp.net动态命名html元素有关,获取Id值的一种方法是使用clientId,如Button1.clinetId
$("#<%=Button1.ClientID %>").click(function () {
$(".message").stop(true,true).slideToggle().fadeOut(6000);
});
$(“#”)点击(函数(){
$(“.message”).stop(true,true).slideToggle().fadeOut(6000);
});
很简单,点击按钮会触发回发,从而导致重新加载页面。您的动画在有机会播放之前被取消(除非随机延迟)
ASP.NET Webforms将事件处理程序附加到按钮单击事件,该事件触发为页面动态生成的javascript。这是webforms中交互页面的中心机制。我看到的答案是,为了正确选择按钮,他们将id更改为类 就我个人而言,我不喜欢更改代码来解决类似这样的问题,因为该ID是ASP.NET控件所必需的,我们不妨将其作为目标 我发现选择.NET控件的最佳方法是使用“ending in”(结束于)选择器,因为它们的ID是在运行时预先添加的
$("[id$='Button1']").click(function () {
$(".message").stop(true,true).slideToggle().fadeOut(6000);
});
我不知道您是否正在使用母版/内容页,但如果是这样,我发现works为您的母版/内容页提供了一个ID 如果您只是使用其中一个,并且假设您给母版页一个ID“Mstr”,给内容页一个ID“Cont”,您可以创建如下JavaScript前缀:
var masterPrefix = "Mstr_",
contentPrefix = "Cont_";
然后,您可以创建一个名为$getElement()
的函数,该函数允许您在标记中传递给定的ID,如下所示:
function $getElement(id) {
return $("#" + masterPrefix + contentPrefix + id);
}
然后,根据您的具体示例,您可以通过执行以下操作将jQuery对象获取到runat=“server”div:
var $button = $getElement("Button1");
$button.click(function() {
$(".message").stop(true,true).slideToggle().fadeOut(6000);
});
我发现,当您进入具有大量客户端脚本的大型项目时,这种方法是一种救命稻草
或者,如果您不喜欢调用另一个函数来返回对象,则可以始终执行以下操作:
var $button = $('input[id$="Button1"]');
$button.click(function() {
$(".message").stop(true,true).slideToggle().fadeOut(6000);
});
这里你只是说给我一个ID以“Button1”结尾的div。查看呈现的代码(在浏览器中查看源代码),并在fiddler中使用该代码或在此处发布。@amit_g通过查看源代码查看上面添加的代码这很可能是因为表单已提交。单击此按钮时是否发生回发?您缺少$for
$(“.message”)
您缺少$for$(“.message”)
没问题,鲍勃!英雄联盟我必须这么做!您缺少$for$(“.message”)
,因此我如何调用该函数,使其不会触发回发,从而使动画不会取消?