• jquery 之 一些容易混淆的东东


      (本文转载自: http://www.cnblogs.com/2faith/archive/2012/07/30/2614532.html

    一,什么是jquery

    jQuery是继prototype之后又一个优秀的Javascrīpt框架。其宗旨是——WRITE LESS,DO MORE,写更少的代码,做更多的事情。说白了,jquery就是javascript。只不过按照人的习惯思维把它封装了一个比较强大的框架。还有一点jquery能够把html和javascript尽量分离,这也是我愿意用jquery的一个重要原因。jqueryt很灵活,太灵活了,可以说是他一个优点,也是他一个缺点,达到一种效果,十个人也许会用十种不同的方法来实现这个过程,结果一样,过程不一样,这到底是好,还是坏呢。就各说各的理了。

    二,学习和使用jquery的困惑

    1)$.fn.extend({})和$.extend({})

    $.fn.extend是扩展jQuery元素集来提供新的方法(通常用来制作插件)。解释一下,就是通过$.fn.extend产生的jquery方法在调用jquery时,不会包括括在jquery自身的对象中,它是扩展插件的形势,继承的。你可以把它理解为php中的extend。

    举个例子:

    $.fn.extend({     
      checkname: function() {     
         
       if($.trim($(this).val()) != ""){     
         
           return true;        
         
        }else{     
         
          return false;     
         
        }     
      }     
    });     

    调用时 $("input.name").checkname();

     

    $.extend是扩展jQuery对象本身。解释一下,就是说通过$.extend产生的jquery方法,在调用jquery时,会包括在jquery自身的对象中。说白了,就是在jquery对象中添加方法,例如:

    $.extend({     
      checkname: function(name) {     
         
       if($.trim(name!= ""){     
         
           return true;        
         
        }else{     
         
          return false;     
         
        }     
      }     
    });  

    调用时 $.checkname($("input.name").val());

     

    2)$().each({})和$.each({})

    $().each({})用来循环数组和对像

    <ul>     
      <li><div>Glen</div></li>     
      <li>Tane</li>     
      <li>Ralph</li>     
    </ul>     

    下面是循环对象

    $("ul li").each(function(k,v){     
     alert("key="+k+",value="+$(v).html());     
    });     
    );     

    下面是循环数组

    array = [0,1,2];     
    $(array).each(function(k,v){     
     alert("key="+k+",value="+v);     
    });     

    $.each({})可用来循环所有数组和对象,个人觉得他们二个没什么差别,除了写法不一样外

    下面是循环数组

    array = [0,1,2];     
     $.each(array,function(k,v){     
      alert("key="+k+",value="+v);     
     });   

    下面是循环对象

    $.each($("ul li"),function(k,v){     
     alert("key="+k+",value="+$(v).html());     
    });     

    注意:function(k)这里k是下标,function(k,v)这是k还是下标,v不一定,有可能是数组里面的一个值,也有可能是一个对象,如果是对象时,如果参数不写出来,默认情况是this

     

    3),$(" :contains()")和$("  :has()")

    $(" :contains()") 匹配包含给定文本的元素,contains里面包括的是文本内空

    $("li:contains('Ra')").css('color','red');

    $("  :has()")匹配含有选择器所匹配的元素的元素,has里面包话的是一个标签

    $("li:has(div)").css('color','red');

     

    4), $(" :first")和 $(" :first-child")

     $(" :first") 匹配找到的第一个元素

    $(" :first-child") 匹配第一个子元素,':first' 只匹配一个元素,而此选择符将为每个父元素匹配一个子元素
    <div><ul>     
        <li>list item 1</li>     
        <li>list item 2          
          <ul>     
            <li>list item 2-a</li>     
            <li>list item 2-b</li>     
          </ul>     
        </li>     
        <li>list item 3</li>     
        <li>list item 4</li>     
    </ul></div>     
    $("ul li:first").css('color','red');        //只匹配第一次,  
    $("ul li:first-child").css('color','red');    //匹配每个符合要求的对象  
    5),$().html()和$().text()  
    $().html()取得第一个匹配元素的html内容。这个函数不能用于XML文档。但可以用于XHTML文档。  
    $().text()结果是由所有匹配元素包含的文本内容组合起来的文本。这个方法对HTML和XML文档都有效。
    <span><p>Hello</p></span> 
    $('span').html();    //得到的结果是<p>Hello</p> 
    $('span').texxt();    //得到的结果是Hello  

    6),$().empty()和$().remove() $().empty() 清空匹配元素中的内空,但不清空自身、 $().remove(),清空匹配元素中的内空,以及自身
    <span><p>Hello</p></span> 
    $('p').empty() //得到的结果是<span><p></p></span> 
    $('p').remove() //得到的结果是<span></span> 
    
    
    
     
    7),关键字 this 和 $(this)  
    
    

       与在javascript的作用一样,this引用的是携带相应行为的DOM元素。为了使该DOM元素能够使用jQuery中的方法,所以用$(this)将其转换成jQuery对象。

    
    

     

     

     

     

     

     

  • 相关阅读:
    FPGrowth 实现
    数据库事务的4个特性ACID
    redis简介(keeper实时报表的基本部分)
    HADOOP中的CRC数据校验文件
    潜在语义分析
    AdaBoost 算法
    cocosBuilder生成cbbi文件,绑定到cocos2d-x
    C++继承模型
    Android应用经典主界面框架之中的一个:仿QQ (使用Fragment, 附源代码)
    从今天開始学习iOS开发(iOS 7版)--实现一款App之Foundation框架的使用
  • 原文地址:https://www.cnblogs.com/zjfazc/p/2614571.html
Copyright © 2020-2023  润新知