经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » jQuery » 查看文章
《锋利的JQ》摘抄(一) jq基础篇
来源:cnblogs  作者:Aodo  时间:2019/3/26 8:43:13  对本文有异议

前言:第一次写博客有点紧张233333,我会在博客里放一下在赌这本书过程中遇到的一些有用的知识点,希望等帮助到大家。好了正题开始(只要是我不知道该说啥了= =) 

一,资源(在w3cfuns资源中可以找到第一版和第二版

         《锋利的jquery》: http://pan.baidu.com/share/link?shareid=1725756399&uk=4245516461 (PDF)

                                       http://www.readfar.com/books/5520ce503063e1f304000696(ebup)

二、个人整理的一些内容

  1.解决Jq与其他库的冲突问题

    在jQuery库中,几乎所有插件都被限制在自己的命名空间里。通常,全局对象都被很好的存在jQuery命名空间里,与其他js库共用时一般不会产生冲突如(Prototype、MooTools、YUI)

    1.jQuery库在其他库之后导入(这里指<head>引用js库的顺序)

      (1)如果想确保jQuery不会与其他库冲突,又想自定义一个快捷方式,可以进行如下操作

          自定义一个快捷方式,将$转让给其他库使用

  1. var $j = jQuery.noConflict(); //自定义一个快捷方式
  2. $j(function(){ //使用jQuery,利用自定义快捷方式$j
  3. $j("p").click(function(){
  4. alert( $j(this).text() );
  5. })
  6. })
  7. $("XX").style.display = 'none' ; //使用prototype.js

                (2)如果不想备用名称,还想使用$,且不相与其他库冲突,可以进行如下操作

              1)转让$给其他库,然后在jQuery设定页面内使用jQuery的 ' $ ' ,在外部使用其他库的 ' $ '

  1. jQuery.noConflict(): //将变量$的控制权转让
  2. jQuery(function($){ //在使用jQuery的页面加载时时执行的函数
  3. $("p").click(functin(){ //在函数内部继续使用$()方法
  4. alert( $(this).text() );
  5. })
  6. })
  7. $("XX").style.display = 'none'; //在函数外部使用prototype.js

             2)定义匿名函数并设置形参为$

  1. jQuery.noConflict(); //将变量$的控制权转让给其他库
  2. (function($){ //定义匿名函数,形参为$
  3. $(function(){ //匿名函数内的$均为jQuery
  4. $("p").click(function(){
  5. alert( $(this).text() ); //继续使用jQuery的$()方法
  6. });
  7. });
  8. })(jQuery); //执行匿名函数且传递实参jQuery
  9. $("XX").style.display = 'none'; //使用prototype.js

     2.jQuery库在其他库之前导入

      直接使用”jQuery“来使用jQuery库的函数,同时" $() "方法作为其他库的快捷方式,无需调用noConflict()函数

  1. jQuery(function(){ //直接使用jQuery,无需调用 "jQuery.noConflict()" 函数
  2. jQuery("p").click({
  3. alert( jQuery(this),text() );
  4. })
  5. })
  6. $("XX").style.display = 'none'; //在jQuery函数外部使用prototype.js

        2.jQuery选择器

              jQuery选择器完全继承了CSS的风格,利用jQuery选择器,可以非常便捷的找出特定 DOM 元素。

    1.完善的处理机制

        (1)使用jQuery选择器可以避免因使用传统的getElementById()等函数因无法找到页面元素而报错的情况,jQuery选择器即使获取不到元素也不会报错

  1. .demo{ //给class为demo的元素添加样式
  2. }
  3. $(".demo").click(function(){ //给class为demo的元素添加点击事件
  4. })
  5.  
  6. //传统函数
  7. if(document.getElementById("XX")){ //为避免找不到元素而进行非空检测
  8. document.getElementById("XX"),style.color = "red";
  9. }
  10. //jQuery选择器
  11. $(’#XX‘).css("color","red"); //无需判断是否存在

                   (2) 判断网页上是否存在元素时,应注意$('#XX')获取的永远是对象

  1. //错误实例
  2. if($('#XX ')){
  3. //Do something
  4. }
  5.  
  6. //根据获取到元素的长度判断
  7. if( $('#XX').length>0 ){
  8. //Do something
  9. }
    //或者转化为DOM对象判断
  10. if( $('#XX')[0] ){
  11. //Do something
    }

              2.一些神奇的选择器与jQuery等价方法

             (2-6)选取prev元素后的下一个<div>同辈元素,(2-7)选取id为 "prev" 的元素后面所有的<div>同辈元素

           

             

              3.过滤选择器

                   通过特定的过滤规则筛选所需DOM元素,与CSS的伪类选择器语法校内沟通,都以(:)开头。

      1.基本过滤选择器

           

                   

                    2.内容过滤选择器

         

                   

                    3.属性过滤器

  1. [attribute] 一一选取拥有此属性的元素
  2. [attribute1][attribute2][attribute3]选择满足多个条件的元素(每选择一次,缩小范围一次)

  3. [arrtibute XX value]中XX为如下符号是分别代表不同的涵义
  4. "=" 一一属性的值为value "*=" 一一属性的值含有value
  5.  
  6. "^=" 一一属性的值以value开始 "$=" 一一属性的值以value结束
  7.  
  8. "!=" 一一属性的值不等于value(没有属性arrtibute的元素也会被选取)

    "~=" 一一选取属性用空格分隔的值中包含一个给定的元素(例如 $('div'[title~="uk"]') 选取<div title="uo uk Aodo"/>元素)

 

 

                    4.表单对象属性过滤

           

              4.选择器中的一些注意事项

                      1.选择器中含有 “.”、“#”、“(”、“]” 等特殊字符

  1. <div id="id#b">bb</div> //错误:$("#id#b") 正确:$("#id\\#b");
  2. <div id="id[1]">cc</div> //错误:$("#id[1]") 正确:$("#id\\[1\\] ");

                       2.选择器中“空格”的坑

                      有如下代码

  1. <div class = "test">
  2. <div style = "display:none;">aa</div>
  3. <div style = "display:none;">bb</div>
  4. <div style = "display:none;">cc</div>
  5. <div class = "test" style = "display:none;">dd</div>
  6. </div>
  7. <div class = "test" style = "display:none;">ee</div>
  8. <div class = "test" style = "display:none;">ff</div>

                     使用jQuery选择器获取他们,会获取不同的结果。之所以会出现这种情况是因为后代选择器和过滤选择器的不同

  1. var $t_a = $('.test :hidden'); //带空格的jQuery选择器(后代选择器,选择class为“test”的后代元素里hidden的元素)
  2. var $t_b = $('.test:hidden'); //不带空格的jQuery选择器(过滤选择器,选择隐藏的class为“test”的元素)
  3. var len_a = $t_a.length;
  4. var len_b = $t_b.length;
  5. alert(" $('.test :hidden') = " + len_a); //输出 4
  6. alert(" $('.test:hidden') = " + len_b); //输出 3

三、实例

               实现品牌列表的精简显示和全部显示效果图如下。单击“显示全部商品”按钮时,显示全部品牌,列表部分高亮显示;单击“精简显示品牌”按钮时,隐藏部分品牌,高亮显示消失。

 

 

               html页面

  1. <div class="SubCategoryBox">
  2. <ul>
  3. <li><a href="#">佳能</a><i>(30440)</i></li>
  4. <li><a href="#">索尼</a><i>(27220)</i></li>
  5. <li><a href="#">三星</a><i>(20284)</i></li>
  6. <li><a href="#">尼康</a><i>(56210)</i></li>
  7. <li><a href="#">松下</a><i>(261230)</i></li>
  8. <li><a href="#">卡西欧</a><i>(9440)</i></li>
  9. <li><a href="#">富士</a><i>(20540)</i></li>
  10. <li><a href="#">柯达</a><i>(29446)</i></li>
  11. <li><a href="#">宾得</a><i>(16444)</i></li>
  12. <li><a href="#">理光</a><i>(30450)</i></li>
  13. <li><a href="#">奥林巴斯</a><i>(30120)</i></li>
  14. <li><a href="#">明基</a><i>(12340)</i></li>
  15. <li><a href="#">爱国者</a><i>(15440)</i></li>
  16. <li><a href="#">其他品牌相机</a><i>(3440)</i></li>
  17. </ul>
  18. <div class="showmore">
  19. <a href="more.html"><span>显示全部品牌</span></a>
  20. </div>
  21. </div>

               css部分

  1. * {
  2. margin: 0;
  3. padding: 0;
  4. }
  5. .clearfix {
  6. content: "";
  7. clear: both;
  8. }
  9. .SubCategoryBox {
  10. width: 600px;
  11. border: 1px solid #ccc;
  12. padding: 10px;
  13. position: relative;
  14. left: 30%;
  15. }
  16. .SubCategoryBox ul {
  17. list-style: none;
  18. }
  19. .SubCategoryBox ul li {
  20. float: left;
  21. width: 33.3%;
  22. height: 30px;
  23. line-height: 30px;
  24. text-align: center;
  25. }
  26. .SubCategoryBox ul li a {
  27. text-decoration: none;
  28. color: #000;
  29. }
  30. .showmore {
  31. width: 100%;
  32. height: 30px;
  33. text-align: center;
  34. }
  35. .showmore a {
  36. display: inline-block;
  37. width: 100px;
  38. height: 30px;
  39. line-height: 30px;
  40. border: 1px solid #ccc;
  41. padding: 2px;
  42. text-decoration: none;
  43. color: #000;
  44. }
  45. .promoted {
  46. color: red;
  47. }

 

原文链接:http://www.cnblogs.com/AodoDay/p/Sharp_jQuery.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号