不会的要多查多问,不然不会的永远不会,哪怕你离会就差了那么一点点
第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]

jquery.cookie 使用方法

[不指定 2013/05/19 00:36 | by 刘新修 ]
一个轻量级的cookie 插件,可以读取、写入、删除 cookie。
jquery.cookie.js 的配置
首先包含jQuery的库文件,在后面包含 jquery.cookie.js 的库文
JavaScript代码
  1. <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>  
  2. <script type="text/javascript" src="js/jquery.cookie.js"></script>  
使用方法
1.新添加一个会话 cookie:
$.cookie('the_cookie', 'the_value');
注:当没有指明 cookie有效时间时,所创建的cookie有效期默认到用户关闭浏览器为止,所以被称为
“会话cookie(session cookie)”。
2.创建一个cookie并设置有效时间为 7天:
$.cookie('the_cookie', 'the_value', { expires: 7 });
注:当指明了cookie有效时间时,所创建的cookie被称为“持久 cookie (persistent cookie)”。
3.创建一个cookie并设置 cookie的有效路径:
$.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });
注:在默认情况下,只有设置 cookie的网页才能读取该 cookie。如果想让一个页面读取另一个页面设
置的cookie,必须设置cookie的路径。cookie的路径用于设置能够读取 cookie的顶级目录。将这
个路径设置为网站的根目录,可以让所有网页都能互相读取 cookie (一般不要这样设置,防止出现冲突) 。
4.读取cookie:
$.cookie('the_cookie'); // cookie存在 => 'the_value'
$.cookie('not_existing'); // cookie不存在 => null
5.删除cookie,通过传递null作为cookie的值即可:
$.cookie('the_cookie', null);
 
----------相关参数的解释---------------
1).expires: 365
定义cookie的有效时间,值可以是一个数字(从创建cookie时算起,以天为单位)或一个Date 对
象。如果省略,那么创建的cookie是会话cookie,将在用户退出浏览器时被删除。
2).path: '/'
默认情况:只有设置cookie的网页才能读取该cookie。
定义cookie的有效路径。默认情况下, 该参数的值为创建 cookie 的网页所在路径(标准浏览器的行为) 。
如果你想在整个网站中访问这个cookie需要这样设置有效路径:path: '/'。如果你想删除一个定义
了有效路径的 cookie,你需要在调用函数时包含这个路径:$.cookie('the_cookie', null,
{ path: '/' });。 domain: 'example.com'
默认值:创建 cookie的网页所拥有的域名。
3).secure: true
默认值:false。如果为true,cookie的传输需要使用安全协议(HTTPS)。
4).raw: true
默认值:false。
默认情况下,读取和写入 cookie 的时候自动进行编码和解码(使用encodeURIComponent 编码,
decodeURIComponent 解码)。要关闭这个功能设置 raw: true 即可。
XML/HTML代码
  1. <head>  
  2.     <title>cookie保存用户名密码</title>  
  3.     <script src="Scripts/jquery-1.4.2.js" type="text/javascript"></script>  
  4.     <script src="Scripts/jquery.cookie.js" type="text/javascript"></script>  
  5.     <!--插件必须放在jquery下面-->  
  6.     <script type="text/javascript">  
  7.         $(function () {  
  8.             $("#btn").click(function () {  
  9.                 var hname = $("#txtname").val();  
  10.                 var hpassword = $("#txtpassword").val();  
  11.                 $.cookie("hostname", hname, { expires: 1 });  
  12.                 $.cookie("hostpassword", hpassword, { expires: 1 });  
  13.                 if (hname == "admin" && hpassword == "123456") {  
  14.                     alert("欢迎admin登入");  
  15.                 }  
  16.             });  
  17.             var hname = $.cookie("hostname");  
  18.             var hpassword = $.cookie("hostpassword");  
  19.             if (hname && hpassword) {  
  20.                 $("#txtname").val(hname);  
  21.                 $("#txtpassword").val(hpassword);  
  22.             }  
  23.         });  
  24.     </script>  
  25. </head>  
  26. <body>  
  27. <table border="1">  
  28.     <tr>  
  29.         <td>用户名:</td>  
  30.         <td><input type="text" id="txtname" /></td>  
  31.     </tr>  
  32.     <tr>  
  33.         <td>密码:</td>  
  34.         <td><input type="password" id="txtpassword" /></td>  
  35.     </tr>  
  36.     <tr>  
  37.         <td colspan="2"><input type="button" id="btn" value="进入" /></td>  
  38.     </tr>  
  39. </table>  
  40. </body>  

 

使用jquery实现对cookie的操作  前段时间刚学完jquery和ajax,老师就要我们使用jquery和ajax做一个项目,功能类似于淘宝一样的网上购物,但是不允许使用服务器控件。那么要想保存用户登录信息的cookie也就只有使用jquery了。其实使用query操作cookie也不难。

首先我们要下载一个jquery.cookie.js的插件,然后添加到项目里面就行了。
下面我们来简单了解一下jquery.cookie.js这个插件的用法:
 
jquery中cook的使用方法:
1.首先找到jquery.cook.js这个文件,然后添加到html页或aspx页中(请注意上面两个文件的顺序切勿添加反了)
2.然后在需要使用cookie的js文件中使用cookie
/// <reference path="jquery-1.8.3.min.js" />
/// <reference path="jquery.cookie.js" />
(请注意上面两个文件的顺序切勿添加反了)
3.cookie的简单介绍  cookie("cookie的名称","cookie中保存的值","cookie保存的时间(单位为天)")
4.使用cookie  获取将本地的cookie中的值 var v= $.cookie("GoodsInfo")  新创建一个名为UserInfo的cookie,其值为:userName=zhangsan;pwd:123456;id=1,
保存时间为7天:
var value = "userName=zhangsan;pwd=123456;id=1";
$.cookie("UserInfo", cookieValue, { expires: 7 });
//{ expires: 7 }cookie在本地保存的时间,需要修改时间的话只需要将7改为其他值
 
为了方便获取到cookie中的值,我们也可以以"用户名;密码;用户编号"的形式来存放cookie的值:  var value="zhangsan;123456;1";
//建议使用这种方法
5.cookie的具体使用:
//在页面加载的时候会执行下面的
JavaScript代码
  1. $(function() {
  2. //判断本地之后存在cookie,如果存在即取出里面的值    
  3. if($.cookie("UserInfo")!=null)
  4. {
  5. //获取存放在cookie中的值  var cookieValue = $.cookie("UserInfo");  
  6. //将获取到的cookie中的值以";"分割,会分别得到id与count的字符串  
  7. //分割得到的值会存放还一个数组中  var cookieArr=cookieValue.split(';');  
  8. //这样获取到得的cookieArr中的个元素以及值分别为:  
  9. //cookieArr[0]:zhangsang     对应用户的用户名  
  10. //cookieArr[1]:123456        对应用户的密码  
  11. //cookieArr[2]:1             对应用户的编号  
  12. }
  13.  
  14. })
6.在WebService中用来实现登录的方法中可以按照这样的思路来编写代码:
(1)根据用户的用户名和密码查询用户的信息
(2)将查询到得用户的信息以“用户名;密码;用户编号”的形式返回,也可以单独返回用户的编号
(3)在$.ajax执行成功后的方法里面可以将返回的值存储在cookie中
JavaScript代码
  1. $.ajax({
  2. type: "post",
  3. contentType: "application/json",
  4. url: "WebServices/UserWebService.asmx/GetUserInfo",
  5. data: "{userName:'" + userName + "',userPwd:'" + userPwd + "'}",
  6. dataType: "json",
  7. success: function (result)
  8. {
  9. $.cookie("UserInfo", result.d, { expires: 7 });
  10. }
  11.  
  12. });
在需要使用用户编号或用户名的方法中使用第5步提供的方法获取用户的编号或用户名,然后再将用户的编号或用户名作为参数传递
****************************************************************************************
关闭广告的实例DEMO:
JavaScript代码
  1. $(".close").click(function(){
  2. $(this).parents('div.ad-box:eq(0)').hide();
  3. $.cookie('topad', 'test', { path: '/', expires: 1 });
  4. return false;
  5. })
  6. //判断如果topad不为空的话就执行
  7. if($.cookie("topad")!=null){
  8. $(".topad").hide();
  9. }
XML/HTML代码
  1. <div class="firstad topad ad-box">
  2. <h4>这里的第一个广告</h4>
  3. <div id="close-boxs"><div class="close"></div></div>
  4. </div><!-- firstad end -->
CSS代码
  1. .firstad{width:800px;height:50px;line-height:50px;text-align:center;color:#fff;width:auto;background:#0000ff;position:relative;}
  2. .close{width:10px;height:10px;background:#FF0000;border:1px solid white;position:absolute;top:0px;rightright:0;cursor:pointer}
  3.  

 

Tags: ,

jQuery替换节点

[不指定 2013/05/19 00:25 | by 刘新修 ]

 如果要替换某个节点,jQuery提供了相应的方法,即replaceWith()和replaceAll()。replaceWith()方法的作用是将所有的元素都替换成指定的HTML或者DOM元素。

JavaScript代码
  1. $("p").replaceWith("<strong>我在学习jQuery</strong>");  

也可以使用jQuery中另一种方法replaceAll()来实现,该方法与replaceWith()方法的左右相同,知识点到了replaceWith()操作,可以使用如下的jQuery代码实现同样的功能:

JavaScript代码
  1. $("<strong>我在学习jQuery</strong>").replaceAll("p");  

该示例用到的HTML代码:

XML/HTML代码
  1. <p>我在学习jQuery</p>  

 

 下面,让我们来学习制作一个简易的下拉面板。你可能已经见过许多下拉面板,在上面你只需要点击提示按钮,页面就会出现一个下拉面板。

下面是核心jQuery代码:

JavaScript代码
  1. $(document).ready(function(){  
  2.     $(".btn-slide").click(function(){  
  3.         $("#panel").slideToggle("slow");  
  4.         $(this).toggleClass("active");  
  5.         return false;  
  6.     });  
  7. });  

当点击一个带有class=”btn-slide”的元素时,jQuery就会对 <div id=”panel”> 元素进行展收操作(slideToggle),并且给<a class=”btn-slide”>元素添加一个class=”active”的属性。然后.active class通过CSS背景定位改变箭头的背景位置。

 1、停止元素的动画

很多时候需要停止匹两己元素正在进行的动画,例如上例的动画,如l果需要在某处停止动画,需要使用stop()方法。stop()方法的语法缩构为:

stop([clearQueue][,gotoEnd]);

参数clearQHCHC和gotoEnd都足町选的参数,为Boolean值(ture或flase)。clearQueue代表足胥婴清空术执{j.完的动嘶队列,90toEnd代表是否直接将萨在执行的动画跳转到术状态。
    如粜商接使川stop()方法.!【!IJ会。一即停.l卜专前一在进行的动画,如.粜接下来还有动画等待继续进行.呲0以当前状态J r始接下柬的动画。经常会遇到这种情况.在为。’个元索绑定hover事件之后.Jf】户把光标移入元素时会触发动画效粜,而当这个动画还没结束时,用户就将光标移出这个元素了,J且j么光标移出的动画效粜将会被放进队列之中,等待光标移入的动画结束后再执行。I蚓此如粜光标移入移出搿过快就会导致动画效粜.b光标的动作不一1致。此时只要神:光标的移入、移出动越之前加入stop()力‘法,就能解决这个问题。stop()方法会结束当前j下在进行的动l画,并立即执行队列中个动画。以下代码就可以解决刚才的问题。

2.判断元素是否处于动画状态

在使用animate()方法的时候,要避免动画积累而导致的动画与用户的行为不一致.当用户快速在某个元素上执行animate()动画的时,就会出现动画积累。解决方法是判断元素是否正处于动画状态,如果元素不处于动画状态,才为元素添加新的动画,否则不添加。代码如下:

JavaScript代码
  1. if (!$(element).is(":animated")) {   
  2.     //判断元素是否正处于动画状态  
  3.     //如果没有进行动画,则添加动画  
  4. }  

这个判断方法在animate()动画中经常被用到,需要特别注意。

Tags: , , ,

jQuery CSS-DOM操作

[不指定 2013/05/18 23:48 | by 刘新修 ]

CSS-DOM技术简单来书就是读取和设置style对象的各种属性。style属性很有用,但最大不足是无法通过它来提取到通过外部CSS设置的样式信息,然而在jQuery中,这些都是非常的简单。

可以直接利用css()方法获取元素的样式属性,jQuery代码如下;

JavaScript代码
  1. $("p").css("color"); // 获取<p>元素的样式颜色  

 

无论color属性是外部CSS导入,还是直接拼接在HTML元素里,css()方法都可以获取到属性style里的其它属性的值。

也可以直接利用css()方法设置某个元素的单个样式,例如:

JavaScript代码
  1. $("p").css("color","red"); //设置<p>元素的样式颜色为红色  

与attr()方法一样,css()方法也可以同时设置多个样式属性,代码如下:

JavaScript代码
  1. $("p").css({"fontsize""30px", "backgroundcolor":"#EEE"})  
  2. //同时设置字体大小和背景色  

对透明度的设置,可以直接使用opacity属性,则可以通过如下jQuery代码实现:

JavaScript代码
  1. $("p").css("opacity","0.5");  

如果获取某个元素的height属性,则可以通过如下jQuery代码实现;

JavaScript代码
  1. $(element).css("height");  

在jQuery中还有另外一种方法也可以获取元素的高度,即height().他的左右是取得匹配元素当前计算的高度(px)。jQuery代码如下:

JavaScript代码
  1. $("p").height();  

height()方法也能用来设置元素的高度,如果传递的值是一个数字,则默认单位为px.如果要用其他单位(例如em),则必须传递一个字符串。jQuery代码如下:

JavaScript代码
  1. $("p").height(100);  
  2. $("p").height("10em");  

与height()方法对应的还有一个width()方法,它可以取得匹配元素的宽度值(px)。

JavaScript代码
  1. $("p").width(); //获取<p>元素的宽度值  

同样,width()方法也能用来设置元素的宽度

JavaScript代码
  1. $("p").width("400px"); //用来设置<p>元素的宽度值为400px  

 

此外,在CSS-DOM中,还有以下几个经常使用的方法。

1.offset()方法

它的作用是获取元素在当前视窗的相对偏移,其中返回的对象包含两个属性,即top和left,它只对可见元素有效。例如用它来获取<p>元素的偏移量,jQuery代码如下:

JavaScript代码
  1. var offset = $("p").offset(); //获取<p>元素的offset()  
  2. var left = offset.left;  
  3. var top = offset.top;  

 

2.position()方法

它的作用是获取元素相对于最近的一个postion样式属性设置为relative或者absolute的祖父节点的相对偏移,与offset()一样,它返回的对象也包括两个属性,即top和left。jQuery代码如下:

JavaScript代码
  1. var postion = $("p").postion(); //获取<p>元素的postion()  
  2. var left = postion.left; //获取左偏移  
  3. var top = postion.top; //获取右偏移  

 

3.scrollTop方法和scrollLeft()方法

这两个方法的作用分别是获取元素的滚动条距顶端的距离和距左侧的距离。例如使用下面的代码获取<p>元素的滚动条距离:

JavaScript代码
  1. var $p = $("p")  
  2. var scroolTop = $p.scrollTop();  
  3. var scroolLeft = $p.scrollLeft();  

另外,可以为这两个方法指定一个参数,控制元素的滚动条到指定位置。例如使用如下代码控制元素内的滚动条滚动到距顶端300和距左侧300的位置;

JavaScript代码
  1. $("textarea").scrollTop(300);  
  2. $("textarea").scrollLeft(300);  
Tags: , ,

用户可以单击商品列表下方的“显示全部品牌”按钮来显示全部的品牌。单击“显示全部品牌”按钮同时,列表会将推荐的品牌的名字高亮显示,按钮里的文字也换成了“精简显示品牌”。再次单击“精简显示品牌”按钮,即可回到初始状态。

实现这个示例,代码如下:

JavaScript代码
  1. ……  
  2. <script>  
  3. $(function() {  
  4.     var $category = $("ul li:gt(4):not(:last)"); //获取索引值大于4的品牌对象(除最后一条)  
  5.     $category.hide(); //隐藏上面获取到的jQuery对象  
  6.     var $togglebtn = $(".more>a"); //获取“显示全部品牌”按钮  
  7.     $togglebtn.click(function() { //给按钮添加onclick事件  
  8.         if ($category.is(":visible")) { //如果元素显示  
  9.             $category.hide(); //隐藏$category  
  10.             $(".more a span").css("background", "url(img/up_down.png) no-repeat 0 5px").text("显示全部品牌"); //改变背景、文字  
  11.             $("ul li").removeClass("promoted");  //移除高亮样式  
  12.         } else {  
  13.             $category.show(); //显示$category  
  14.             $(".more a span").css("background", "url(img/up_down.png) no-repeat 0 -18px").text("精简显示品牌") //改变背景、文字  
  15.             $("ul li").filter(":contains('佳能'),:contains('三星'),:contains('松下')").addClass("promoted"); //增加高亮显示  
  16.         }  
  17.         return false; //阻止链接跳转  
  18.     })  
  19. })  
  20. </script>  
  21. ……  
  22. <div>  
  23.   <ul>  
  24.     <li><a href="#">佳能</a><i>(3048)</i></li>  
  25.     <li><a href="#">索尼</a><i>(204)</i></li>  
  26.     <li><a href="#">三星</a><i>(1040)</i></li>  
  27.     <li><a href="#">尼康</a><i>(390)</i></li>  
  28.     <li><a href="#">松下</a><i>(700)</i></li>  
  29.     <li><a href="#">明基</a><i>(800)</i></li>  
  30.     <li><a href="#">三洋</a><i>(700)</i></li>  
  31.     <li><a href="#">拍得丽</a><i>(800)</i></li>  
  32.     <li><a href="#">尼柯</a><i>(700)</i></li>  
  33.     <li><a href="#">爱国者</a><i>(800)</i></li>  
  34.     <li><a href="#">其它</a><i>(760)</i></li>  
  35.   </ul>  
  36.   <div><a href="a.html"><span>显示全部品牌</span></a></div>  
  37. </div>  
  38. ……  

 

1.从第4条开始隐藏后面的品牌(最后一条“其它”除外)。

JavaScript代码
  1. var $category = $("ul li:gt(4):not(:last)");  
  2. $category.hide(); //隐藏上面获取到的jQuery对象  

 

$(“ul li:gt(4):not(:last)”)的意思是获取ul元素下索引值大于5的li元素的集合元素,然后去掉集合元素中的最后一个元素。

2.当用户单击“显示全部品牌”按钮时,执行一下操作。

首先获取到按钮,代码如下:

JavaScript代码
  1. var $gogglebtn = $(".more > a"); //获取“显示全部品牌”按钮  

然后给按钮添加事件,使用show()方法把隐藏的品牌列表显示出来,代码如下:

JavaScript代码
  1. $togglebtn.click(function(){  
  2.     $category.show(); //显示全部品牌  
  3.     return false;  //阻止链接跳转  
  4. })  

 

由于给超练级添加onclick 事件,因此需要使用“return flash”语句让浏览器认为用户没有单击该超链接,从而阻止该超链接跳转。

之后,需要将“显示全部品牌”按钮文本切换成“精简显示品牌”,代码如下:

JavaScript代码
  1. $(".more a span").css("background", "url(img/up_down.png) no-repeat 0 -18px").text("精简显示品牌") //改变背景、文字  

 

这里完成了两部操作,即把按钮的背景图片换成向上的图片,同时也改变了按钮文本内容,将其替换成了“精简显示品牌”。

接下来需高亮推荐品牌,代码如下:

JavaScript代码
  1. $("ul li").filter(":contains('佳能'),:contains('三星'),:contains('松下')").addClass("promoted");
  2. //增加高亮显示  

 

使用filter()方法筛选出符合要求的品牌,然后为它们添加promoted样式。在这里推荐了3个品牌,即佳能、三星、松下。

3.当用户单击“精简显示品牌”按钮时,将执行以下操作。

由于用户单击的是同一个按钮,因此事件仍然是在刚才的按钮元素上。要将切换两种状态的效果在一个按钮上进行,可以通过判断元素的显示或者隐藏来达到目的,代码结构如下:

JavaScript代码
  1. if(元素显示){  
  2.     //元素隐藏  
  3. }else{  
  4.     //元素显示  
  5. }  

在jQuery中,与show方法相反的是hide()方法,因此可以使用hide()方法将品牌隐藏起来,代码如下:

JavaScript代码
  1. $(".more a span").css("background", "url(img/up_down.png) no-repeat 0 5px").text("显示全部品牌"); //改变背景、文字  

接下来需要去掉所有的品牌高亮显示状态,此时可以使用removeClass()方法来完成,代码如下:

JavaScript代码
  1. $("ul li").removeClass("promoted"); //去掉高亮样式  

它将去掉所有li元素上的”promoted”样式,即去掉了品牌的高亮状态。

 该实例利用jQuery效果animate() 方法改变CSS背景定位属性实现动画效果,CSS背景属性值是逐渐改变的,这样视觉上就达到动画效果。

在写入这样的无序列表:

XML/HTML代码
  1. <ul>  
  2.   <li><a href="#">Home</a></li>  
  3.   <li><a href="#">About</a></li>  
  4.   <li><a href="#">Contact</a></li>  
  5. </ul>  

定义下面的CSS样式:

CSS代码
  1. ul { list-style:nonemargin:0; padding:0; }  
  2. li { float:leftwidth:100pxmargin:0; padding:0; text-align:center; }  
  3. li a { display:blockpadding:5px 10pxheight:100%; color:#FFFtext-decoration:noneborder-right:1px solid #FFF; }  
  4. li a { background:url(bg.jpg) repeat 0 0; }  
  5. li a:hover { background-position:50px 0; }  

下面是实现效果的核心jQuery代码:

JavaScript代码
  1. $('#nav a').css({  
  2.     backgroundPosition: "0 0"  
  3. }).mouseover(function () {  
  4.     $(this).stop().animate({  
  5.         backgroundPosition: "(0 -250px)"  
  6.     }, {  
  7.         duration: 500  
  8.     })  
  9. }).mouseout(function () {  
  10.     $(this).stop().animate({  
  11.         backgroundPosition: "(0 0)"  
  12.     }, {  
  13.         duration: 500  
  14.     })  
  15. })  

 

jQuery信息提示(jQuery Tooltip)效果可以很好的提升用户体验,在web developer中也经日趋频繁,下面是一个简单的jQuery息提示效果实例演示。

首先加载jQuery库文件:

JavaScript代码
  1. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>  

下面是jQuery核心代码:

JavaScript代码
  1. $(document).ready(function () {  
  2.     $(".menu a").hover(function () {  
  3.         $(this).next("em").animate({  
  4.             opacity: "show",  
  5.             top: "-75"  
  6.         }, "slow");  
  7.     }, function () {  
  8.         $(this).next("em").animate({  
  9.             opacity: "hide",  
  10.             top: "-85"  
  11.         }, "fast");  
  12.     });  
  13. });  

HTML代码如下:

XML/HTML代码
  1. <ul>  
  2.   <li><a href="#"></a><em style="top: -85px; display: none;"></em></li>  
  3.   <li><a href="#"></a><em style="top: -85px; display: none;"></em></li>  
  4.   <li><a href="#"></a><em style="top: -85px; display: none;"></em></li>  
  5. </ul>  

 

jQuery动画回调函数

[不指定 2013/05/18 23:14 | by 刘新修 ]

在上一篇文章中,如果想在最后一步切换元素的CSS样式,而不是隐藏元素:

css("border","solid 5px blue");

如果知识按照常规的方式,将fadeOut(“slow”)改为css(“border”,”solid 5px blue”),并不能达到预期的效果。预期效果是在动画的最后一步改变元素的样式,而实际的效果是,刚开始执行动哈ude时候,css()方法就被执行过了。

出现这个问题的原因是css()方法并不会加入到动画队列中,而是立即执行。可以使用回调函数(callback)对非动画方法实现排队。只要把css()方法写在最后一个动画的回调函数里即可。代码如下:

JavaScript代码
  1. $(function () {  
  2.     $("#panel").click(function () {  
  3.         $(this).animate({  
  4.             left: "400px",  
  5.             height: "200px",  
  6.             opacity: "1"  
  7.         }, 3000).animate({  
  8.             top: "200px",  
  9.             width: "200px"  
  10.         }, 3000, function () {  
  11.             $(this).css("border", "5px solid blue");  
  12.         })  
  13.     });  
  14. });  

这样以来,css()方法就加入到动画队列中了,从而满足了上文提出的需求。

 

第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]