我创建了一个使用jquery动画的搜索表单,例如NextLevelSearch。 我希望当我打开搜索表单并刷新页面时,这不会关闭。 我怎么能做到这一点?
我尝试使用e.preventDefault();
和return false;
,但无效,我知道这与我的问题无关。
这是我的代码:
$globalsearch_submit.click(function(){
$('#stat').hide();
$('.wrapper-simple').animate({'width':'275px'})
.end().find('.wrapper-simple input[type=text]').css({opacity: 0, visibility: "visible"}).animate({'width': '231px', opacity: 1})
.end().find('.wrapper-simple .button').animate({ 'right': '40px' })
.end().find('.wrapper-simple input[type=submit]').animate({'marginLeft':'235px', opacity: 1}, 10)
return false;
});
$('.wrapper-simple input[type=submit]').click(function() {
$('#stat').show();
$('#stat').delay(500).css('opacity',0).show().animate({opacity:1},100);
$('.wrapper-simple').animate({'width':'40px'})
.end().find('.wrapper-simple input[type=text]').animate({'width': '1px', opacity: 0})
.end().find('.wrapper-simple .button').animate({ 'right': '0' })
.end().find('.wrapper-simple input[type=submit]').animate({'marginLeft':'0', opacity: 0}).attr('value', '');
return false;
});
请帮忙!谢谢。
(对不起我的英语不好)
答案 0 :(得分:2)
我会使用文档hash(window.location.hash)来保存页面的当前状态;
$('.wrapper-simple input[type=submit]').click(function() {
$('#stat').show();
$('#stat').delay(500).css('opacity',0).show().animate({'opacity':1},100);
$('.wrapper-simple').animate({'width':'40px'})
.end().find('.wrapper-simple input[type=text]').animate({'width': '1px', 'opacity': 0})
.end().find('.wrapper-simple .button').animate({'right': 0})
.end().find('.wrapper-simple input[type=submit]').animate({'marginLeft': 0, 'opacity': 0}).attr('value', '');
document.location.hash='form';
return false; // not related to this, but needed for other reasons
});
(在该示例中,我将其设置为“form”,因此单击按钮后,您的页面URL将显示为“mysite.com/mypage.htm#form”。您可以使用任何您喜欢的内容,但有一定的限制允许使用字符 - 请参阅此答案:List of valid characters for the fragment identifier in an URL?)
然后,您可以在页面加载时检测到此标记:
$(document).ready(function(){
var h=window.location.hash.replace(/^#/,'');
if(h==='form'){
$('#stat').css({'opacity':1}).show();
$('.wrapper-simple').css({'width':'40px'})
.end().find('.wrapper-simple input[type=text]').css({'width': '1px', 'opacity': 0})
.end().find('.wrapper-simple .button').css({'right': 0})
.end().find('.wrapper-simple input[type=submit]').css({'marginLeft': 0, 'opacity': 0}).attr('value', '');
}
}
请注意,我已复制代码但更改了对简单css调用的任何动画调用,以立即更改它。
这意味着,一旦用户点击按钮,任何页面刷新,书签,关闭和重新打开书签等都将意味着表单立即打开(页面加载时略有闪烁) ,这是更多的工作要避免)。此外,这不使用cookie,这会越来越成问题。要将表单再次标记为关闭,您可以将哈希设置为其他内容(例如空字符串)。
Twitter,谷歌,Facebook和其他许多人都使用这种技术。