我遇到两个slideToggles的奇怪问题。 #bannerChoice幻灯片工作得很好,但是#search幻灯片,打开时应该重叠#bannerChoice,从不打开多个中途。相反,它会强制页面重新加载。
这是我的代码:
function bannerChoice()
{
$('#bannerChoice').slideToggle(function()
{
if($('#bannerChoice').is(':visible'))
{
$('html').css({overflow:"hidden",height:"100%"});
}
else
{
$('html').css({overflow:"auto",height:"2171px"});
}
});
}
function toggleForm()
{
$('#search').slideToggle(350);
return false;
}
和
<div id="bannerChoice">
<div id="bcText">Select a banner graphic:<br/></div>
<div id="bcImages">
<form action="#" method="post">
<input type="hidden" name="setBanner" id="setBanner" value="">
<img src="/media/profile/images/bgs/bg1_thumb.png"
onClick="setBanner(1,event);"/>
<img src="/media/profile/images/bgs/bg2_thumb.png"
onClick="setBanner(2,event);"/>
<img src="/media/profile/images/bgs/bg3_thumb.png"
onClick="setBanner(3,event)" />
<img src="/media/profile/images/bgs/bg4_thumb.png"
onClick="setBanner(4,event)" /><br/>
<span id="bcBttns">
<input type="submit" value="Submit" class="submit"
name="bttnSubmit" /><input type="button" value="Cancel"
onClick="bannerChoice()">
</span>
</form>
</div>
<div id="bcBG"> </div>
</div>
和
<span onClick="toggleForm()">
<a href="" style="display:inline-block; color:#bbb; padding:0 13px;
line-height:70px;">link text</a></span>
<div style="padding-left:13px; z-index:9004">
<form id="search" method="post" action="#">
<input type="text" name="name" value="Name" style="width:112px"/><br/>
<input type="text" name="city" value="City" style="width:112px" /><br/>
<input type="text" name="state" value="State" style="width:112px" /><br/>
<input type="text" name="zip" value="Zip" style="width:112px" /><br/>
<input type="button" class="submit" style="margin:0 13px 0 13px;"
value="Search">
</form>
</div>
答案 0 :(得分:10)
jQuery不会导致页面刷新。当您点击跨度中的链接时,该页面将转到网址“”,即重新加载当前页面。
您需要在脚本中添加e.preventDefault()
以防止链接执行其默认操作(转到链接):
function toggleForm(e)
{
e.preventDefault();
$('#search').slideToggle(350);
}
您需要在通话中添加event
:
onclick='toggleForm(event)'
bannerChoice()
不会重新加载页面,因为它位于取消按钮上,该按钮不会作为其默认操作的一部分发布。
正如其他人在这里所说的,内联Javascript并不是一个好主意。它使代码不可读,难以调试,并阻止您轻松重用代码。没有(好的)理由在jQuery中使用内联Javascript。
答案 1 :(得分:1)
我使用
遇到了同样的问题<a href="#" id="toggle-trigger">Edit</a>
另一个更简单的选项是,不使用链接“a”标记中的href =或输入提交,以便在页面内进行切换。只需使用:
<a id="toggle-trigger" style="cursor: pointer;">Edit</a>
或者在你的情况下,一个跨度div的样式看起来像一个按钮。
答案 2 :(得分:0)
Is there an easy way to reload css without reloading the page?
使用无需往返服务器的innerHtml属性。