jquery.cookie 使用方法
- <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
- <script type="text/javascript" src="js/jquery.cookie.js"></script>
- <head>
- <title>cookie保存用户名密码</title>
- <script src="Scripts/jquery-1.4.2.js" type="text/javascript"></script>
- <script src="Scripts/jquery.cookie.js" type="text/javascript"></script>
- <!--插件必须放在jquery下面-->
- <script type="text/javascript">
- $(function () {
- $("#btn").click(function () {
- var hname = $("#txtname").val();
- var hpassword = $("#txtpassword").val();
- $.cookie("hostname", hname, { expires: 1 });
- $.cookie("hostpassword", hpassword, { expires: 1 });
- if (hname == "admin" && hpassword == "123456") {
- alert("欢迎admin登入");
- }
- });
- var hname = $.cookie("hostname");
- var hpassword = $.cookie("hostpassword");
- if (hname && hpassword) {
- $("#txtname").val(hname);
- $("#txtpassword").val(hpassword);
- }
- });
- </script>
- </head>
- <body>
- <table border="1">
- <tr>
- <td>用户名:</td>
- <td><input type="text" id="txtname" /></td>
- </tr>
- <tr>
- <td>密码:</td>
- <td><input type="password" id="txtpassword" /></td>
- </tr>
- <tr>
- <td colspan="2"><input type="button" id="btn" value="进入" /></td>
- </tr>
- </table>
- </body>
使用jquery实现对cookie的操作 前段时间刚学完jquery和ajax,老师就要我们使用jquery和ajax做一个项目,功能类似于淘宝一样的网上购物,但是不允许使用服务器控件。那么要想保存用户登录信息的cookie也就只有使用jquery了。其实使用query操作cookie也不难。
- $(function() {
- //判断本地之后存在cookie,如果存在即取出里面的值
- if($.cookie("UserInfo")!=null)
- {
- //获取存放在cookie中的值 var cookieValue = $.cookie("UserInfo");
- //将获取到的cookie中的值以";"分割,会分别得到id与count的字符串
- //分割得到的值会存放还一个数组中 var cookieArr=cookieValue.split(';');
- //这样获取到得的cookieArr中的个元素以及值分别为:
- //cookieArr[0]:zhangsang 对应用户的用户名
- //cookieArr[1]:123456 对应用户的密码
- //cookieArr[2]:1 对应用户的编号
- }
- })
- $.ajax({
- type: "post",
- contentType: "application/json",
- url: "WebServices/UserWebService.asmx/GetUserInfo",
- data: "{userName:'" + userName + "',userPwd:'" + userPwd + "'}",
- dataType: "json",
- success: function (result)
- {
- $.cookie("UserInfo", result.d, { expires: 7 });
- }
- });
- $(".close").click(function(){
- $(this).parents('div.ad-box:eq(0)').hide();
- $.cookie('topad', 'test', { path: '/', expires: 1 });
- return false;
- })
- //判断如果topad不为空的话就执行
- if($.cookie("topad")!=null){
- $(".topad").hide();
- }
- <div class="firstad topad ad-box">
- <h4>这里的第一个广告</h4>
- <div id="close-boxs"><div class="close"></div></div>
- </div><!-- firstad end -->
- .firstad{width:800px;height:50px;line-height:50px;text-align:center;color:#fff;width:auto;background:#0000ff;position:relative;}
- .close{width:10px;height:10px;background:#FF0000;border:1px solid white;position:absolute;top:0px;rightright:0;cursor:pointer}
jQuery替换节点
如果要替换某个节点,jQuery提供了相应的方法,即replaceWith()和replaceAll()。replaceWith()方法的作用是将所有的元素都替换成指定的HTML或者DOM元素。
- $("p").replaceWith("<strong>我在学习jQuery</strong>");
也可以使用jQuery中另一种方法replaceAll()来实现,该方法与replaceWith()方法的左右相同,知识点到了replaceWith()操作,可以使用如下的jQuery代码实现同样的功能:
- $("<strong>我在学习jQuery</strong>").replaceAll("p");
该示例用到的HTML代码:
- <p>我在学习jQuery</p>
jQuery简易下拉面板实例教程
下面,让我们来学习制作一个简易的下拉面板。你可能已经见过许多下拉面板,在上面你只需要点击提示按钮,页面就会出现一个下拉面板。
下面是核心jQuery代码:
- $(document).ready(function(){
- $(".btn-slide").click(function(){
- $("#panel").slideToggle("slow");
- $(this).toggleClass("active");
- return false;
- });
- });
当点击一个带有class=”btn-slide”的元素时,jQuery就会对 <div id=”panel”> 元素进行展收操作(slideToggle),并且给<a class=”btn-slide”>元素添加一个class=”active”的属性。然后.active class通过CSS背景定位改变箭头的背景位置。
jQuery停止动画和判断是否处于动画状态
1、停止元素的动画
很多时候需要停止匹两己元素正在进行的动画,例如上例的动画,如l果需要在某处停止动画,需要使用stop()方法。stop()方法的语法缩构为:
stop([clearQueue][,gotoEnd]);
参数clearQHCHC和gotoEnd都足町选的参数,为Boolean值(ture或flase)。clearQueue代表足胥婴清空术执{j.完的动嘶队列,90toEnd代表是否直接将萨在执行的动画跳转到术状态。
2.判断元素是否处于动画状态
在使用animate()方法的时候,要避免动画积累而导致的动画与用户的行为不一致.当用户快速在某个元素上执行animate()动画的时,就会出现动画积累。解决方法是判断元素是否正处于动画状态,如果元素不处于动画状态,才为元素添加新的动画,否则不添加。代码如下:
- if (!$(element).is(":animated")) {
- //判断元素是否正处于动画状态
- //如果没有进行动画,则添加动画
- }
这个判断方法在animate()动画中经常被用到,需要特别注意。
jQuery CSS-DOM操作
CSS-DOM技术简单来书就是读取和设置style对象的各种属性。style属性很有用,但最大不足是无法通过它来提取到通过外部CSS设置的样式信息,然而在jQuery中,这些都是非常的简单。
可以直接利用css()方法获取元素的样式属性,jQuery代码如下;
- $("p").css("color"); // 获取<p>元素的样式颜色
无论color属性是外部CSS导入,还是直接拼接在HTML元素里,css()方法都可以获取到属性style里的其它属性的值。
也可以直接利用css()方法设置某个元素的单个样式,例如:
- $("p").css("color","red"); //设置<p>元素的样式颜色为红色
与attr()方法一样,css()方法也可以同时设置多个样式属性,代码如下:
- $("p").css({"fontsize":"30px", "backgroundcolor":"#EEE"})
- //同时设置字体大小和背景色
对透明度的设置,可以直接使用opacity属性,则可以通过如下jQuery代码实现:
- $("p").css("opacity","0.5");
如果获取某个元素的height属性,则可以通过如下jQuery代码实现;
- $(element).css("height");
在jQuery中还有另外一种方法也可以获取元素的高度,即height().他的左右是取得匹配元素当前计算的高度(px)。jQuery代码如下:
- $("p").height();
height()方法也能用来设置元素的高度,如果传递的值是一个数字,则默认单位为px.如果要用其他单位(例如em),则必须传递一个字符串。jQuery代码如下:
- $("p").height(100);
- $("p").height("10em");
与height()方法对应的还有一个width()方法,它可以取得匹配元素的宽度值(px)。
- $("p").width(); //获取<p>元素的宽度值
同样,width()方法也能用来设置元素的宽度
- $("p").width("400px"); //用来设置<p>元素的宽度值为400px
此外,在CSS-DOM中,还有以下几个经常使用的方法。
1.offset()方法
它的作用是获取元素在当前视窗的相对偏移,其中返回的对象包含两个属性,即top和left,它只对可见元素有效。例如用它来获取<p>元素的偏移量,jQuery代码如下:
- var offset = $("p").offset(); //获取<p>元素的offset()
- var left = offset.left;
- var top = offset.top;
2.position()方法
它的作用是获取元素相对于最近的一个postion样式属性设置为relative或者absolute的祖父节点的相对偏移,与offset()一样,它返回的对象也包括两个属性,即top和left。jQuery代码如下:
- var postion = $("p").postion(); //获取<p>元素的postion()
- var left = postion.left; //获取左偏移
- var top = postion.top; //获取右偏移
3.scrollTop方法和scrollLeft()方法
这两个方法的作用分别是获取元素的滚动条距顶端的距离和距左侧的距离。例如使用下面的代码获取<p>元素的滚动条距离:
- var $p = $("p")
- var scroolTop = $p.scrollTop();
- var scroolLeft = $p.scrollLeft();
另外,可以为这两个方法指定一个参数,控制元素的滚动条到指定位置。例如使用如下代码控制元素内的滚动条滚动到距顶端300和距左侧300的位置;
- $("textarea").scrollTop(300);
- $("textarea").scrollLeft(300);
全部与精简切换显示jQuery实例教程
用户可以单击商品列表下方的“显示全部品牌”按钮来显示全部的品牌。单击“显示全部品牌”按钮同时,列表会将推荐的品牌的名字高亮显示,按钮里的文字也换成了“精简显示品牌”。再次单击“精简显示品牌”按钮,即可回到初始状态。
实现这个示例,代码如下:
- ……
- <script>
- $(function() {
- var $category = $("ul li:gt(4):not(:last)"); //获取索引值大于4的品牌对象(除最后一条)
- $category.hide(); //隐藏上面获取到的jQuery对象
- var $togglebtn = $(".more>a"); //获取“显示全部品牌”按钮
- $togglebtn.click(function() { //给按钮添加onclick事件
- if ($category.is(":visible")) { //如果元素显示
- $category.hide(); //隐藏$category
- $(".more a span").css("background", "url(img/up_down.png) no-repeat 0 5px").text("显示全部品牌"); //改变背景、文字
- $("ul li").removeClass("promoted"); //移除高亮样式
- } else {
- $category.show(); //显示$category
- $(".more a span").css("background", "url(img/up_down.png) no-repeat 0 -18px").text("精简显示品牌") //改变背景、文字
- $("ul li").filter(":contains('佳能'),:contains('三星'),:contains('松下')").addClass("promoted"); //增加高亮显示
- }
- return false; //阻止链接跳转
- })
- })
- </script>
- ……
- <div>
- <ul>
- <li><a href="#">佳能</a><i>(3048)</i></li>
- <li><a href="#">索尼</a><i>(204)</i></li>
- <li><a href="#">三星</a><i>(1040)</i></li>
- <li><a href="#">尼康</a><i>(390)</i></li>
- <li><a href="#">松下</a><i>(700)</i></li>
- <li><a href="#">明基</a><i>(800)</i></li>
- <li><a href="#">三洋</a><i>(700)</i></li>
- <li><a href="#">拍得丽</a><i>(800)</i></li>
- <li><a href="#">尼柯</a><i>(700)</i></li>
- <li><a href="#">爱国者</a><i>(800)</i></li>
- <li><a href="#">其它</a><i>(760)</i></li>
- </ul>
- <div><a href="a.html"><span>显示全部品牌</span></a></div>
- </div>
- ……
1.从第4条开始隐藏后面的品牌(最后一条“其它”除外)。
- var $category = $("ul li:gt(4):not(:last)");
- $category.hide(); //隐藏上面获取到的jQuery对象
$(“ul li:gt(4):not(:last)”)的意思是获取ul元素下索引值大于5的li元素的集合元素,然后去掉集合元素中的最后一个元素。
2.当用户单击“显示全部品牌”按钮时,执行一下操作。
首先获取到按钮,代码如下:
- var $gogglebtn = $(".more > a"); //获取“显示全部品牌”按钮
然后给按钮添加事件,使用show()方法把隐藏的品牌列表显示出来,代码如下:
- $togglebtn.click(function(){
- $category.show(); //显示全部品牌
- return false; //阻止链接跳转
- })
由于给超练级添加onclick 事件,因此需要使用“return flash”语句让浏览器认为用户没有单击该超链接,从而阻止该超链接跳转。
之后,需要将“显示全部品牌”按钮文本切换成“精简显示品牌”,代码如下:
- $(".more a span").css("background", "url(img/up_down.png) no-repeat 0 -18px").text("精简显示品牌") //改变背景、文字
这里完成了两部操作,即把按钮的背景图片换成向上的图片,同时也改变了按钮文本内容,将其替换成了“精简显示品牌”。
接下来需高亮推荐品牌,代码如下:
- $("ul li").filter(":contains('佳能'),:contains('三星'),:contains('松下')").addClass("promoted");
- //增加高亮显示
使用filter()方法筛选出符合要求的品牌,然后为它们添加promoted样式。在这里推荐了3个品牌,即佳能、三星、松下。
3.当用户单击“精简显示品牌”按钮时,将执行以下操作。
由于用户单击的是同一个按钮,因此事件仍然是在刚才的按钮元素上。要将切换两种状态的效果在一个按钮上进行,可以通过判断元素的显示或者隐藏来达到目的,代码结构如下:
- if(元素显示){
- //元素隐藏
- }else{
- //元素显示
- }
在jQuery中,与show方法相反的是hide()方法,因此可以使用hide()方法将品牌隐藏起来,代码如下:
- $(".more a span").css("background", "url(img/up_down.png) no-repeat 0 5px").text("显示全部品牌"); //改变背景、文字
接下来需要去掉所有的品牌高亮显示状态,此时可以使用removeClass()方法来完成,代码如下:
- $("ul li").removeClass("promoted"); //去掉高亮样式
它将去掉所有li元素上的”promoted”样式,即去掉了品牌的高亮状态。
用jQuery制作动画背景导航菜单
该实例利用jQuery效果animate() 方法改变CSS背景定位属性实现动画效果,CSS背景属性值是逐渐改变的,这样视觉上就达到动画效果。
在写入这样的无序列表:
- <ul>
- <li><a href="#">Home</a></li>
- <li><a href="#">About</a></li>
- <li><a href="#">Contact</a></li>
- </ul>
定义下面的CSS样式:
- ul { list-style:none; margin:0; padding:0; }
- li { float:left; width:100px; margin:0; padding:0; text-align:center; }
- li a { display:block; padding:5px 10px; height:100%; color:#FFF; text-decoration:none; border-right:1px solid #FFF; }
- li a { background:url(bg.jpg) repeat 0 0; }
- li a:hover { background-position:50px 0; }
下面是实现效果的核心jQuery代码:
- $('#nav a').css({
- backgroundPosition: "0 0"
- }).mouseover(function () {
- $(this).stop().animate({
- backgroundPosition: "(0 -250px)"
- }, {
- duration: 500
- })
- }).mouseout(function () {
- $(this).stop().animate({
- backgroundPosition: "(0 0)"
- }, {
- duration: 500
- })
- })
一个简单的jQuery信息提示效果
jQuery信息提示(jQuery Tooltip)效果可以很好的提升用户体验,在web developer中也经日趋频繁,下面是一个简单的jQuery息提示效果实例演示。
首先加载jQuery库文件:
- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
下面是jQuery核心代码:
- $(document).ready(function () {
- $(".menu a").hover(function () {
- $(this).next("em").animate({
- opacity: "show",
- top: "-75"
- }, "slow");
- }, function () {
- $(this).next("em").animate({
- opacity: "hide",
- top: "-85"
- }, "fast");
- });
- });
HTML代码如下:
- <ul>
- <li><a href="#">…</a><em style="top: -85px; display: none;">…</em></li>
- <li><a href="#">…</a><em style="top: -85px; display: none;">…</em></li>
- <li><a href="#">…</a><em style="top: -85px; display: none;">…</em></li>
- </ul>
jQuery动画回调函数
在上一篇文章中,如果想在最后一步切换元素的CSS样式,而不是隐藏元素:
css("border","solid 5px blue");
如果知识按照常规的方式,将fadeOut(“slow”)改为css(“border”,”solid 5px blue”),并不能达到预期的效果。预期效果是在动画的最后一步改变元素的样式,而实际的效果是,刚开始执行动哈ude时候,css()方法就被执行过了。
出现这个问题的原因是css()方法并不会加入到动画队列中,而是立即执行。可以使用回调函数(callback)对非动画方法实现排队。只要把css()方法写在最后一个动画的回调函数里即可。代码如下:
- $(function () {
- $("#panel").click(function () {
- $(this).animate({
- left: "400px",
- height: "200px",
- opacity: "1"
- }, 3000).animate({
- top: "200px",
- width: "200px"
- }, 3000, function () {
- $(this).css("border", "5px solid blue");
- })
- });
- });
这样以来,css()方法就加入到动画队列中了,从而满足了上文提出的需求。