看看我们的jQuery为我们都提供了哪些可用的方法:

  size():很明显,它应该是返回包装集中的元素个数,如$('a').size()表示链接元素的个数;

  get(index):当没指定index时就默认取包装集中所有元素,并以js中的数组形式返回,如果指定了index,则返回下标为index对应的元素,如$('img[title]').get(0)返回包含属性title的第一个img元素,其也等效于$('img[title]')[0];


  index(elem):在包装集中返回元素elem所在的下标,如果没找到该元素则返回-1;

  add(String|elem|Array):把参数中的元素添加到包装集中,如果参数是jQuery选择器,那么将把所有匹配的对象都添加到集合中,如果是html元素那就通过clean方法得到的元素数组添加到集合中,如果是dom元素或dom元素数组,那就直接添加到集合了;注意返回的是添加后的包装集;如$('img[alt]','img[title]')等效于$('img[alt]').add('img[title]')即返回包含了alt属性的img元素或包含了title属性的img元素;


  not(String|elem|Array):把包装集中满足参数条件的元素删除,注意参数只能是筛选表达式,即以"["或者":"开头的表达式,如$('img[title]').not('title*=puy')即返回包含title属性的img元素,并且这些元素的title属性中包含有puy文本;返回的是筛选之后的包装集;


  filter(String|function):如果传入的参数是String类型的话,那么该表达式必须也是筛选表达式,用于从包装集里删除所有与选择器不匹配的元素;如果传入的是一个函数的话,那么包装集中的每个元素都调用这个函数,若这个函数返回false则把这个元素从包装集中删除,而在函数中可以通过this关键字来调用当时包装集中调用方法的元素;如$('td').filter(function(){return this.innerHTML.match(/^"d+$/)})返回td中的内容为数字的所有td元素;


  slice(begin,end):创建并返回新的包装集,该包装集是原来包装集的连续的一部分,且新包装集的第一个元素是原包装集中的begin位置的元素,而最后一个元素是end位置元素的前一元素,当然end可以不指定,那么将延伸到原始包装集的末尾;如$('*').slice(2,3)这个语句选择页面上的所有元素,然后生存包含原始包装集的第三个元素的新包装集,注意这个$('*').get(2)不同,这个返回的是元素,而slice方法返回的是包装集,从而拥有包装集的操作;


  childen():返回原始包装集元素的所有不同子元素所组成的新包装集(不包含文本节点),如$('div').children()返回所有div元素下的子元素所组成的新包装集;如果指定了参数,那么该参数也是筛选表达式;


  contents():返回原始包装集元素的内容新包装集(可以包含文本节点);注意此方法不能接受参数进行过滤;


  next():返回原始包装集元素的所有唯一的下一个兄弟元素所组成的新包装集;如果指定了参数,那么该参数也是筛选表达式;如$('div#someDiv').next()返回包含id为someDiv的div元素的下一个兄弟元素的包装集;如果指定了参数,那么该参数也是筛选表达式;

  nextAll():返回包含原始包装集元素的所有后续兄弟的新包装集;如$('div#someDiv').nextAll()返回包含id为someDiv的div元素的后面兄弟元素的新包装集;如果指定了参数,那么该参数也是筛选表达式;

  parent():返回原始包装集所有元素的唯一直接父元素的新包装集;如果指定了参数,那么该参数也是筛选表达式;


  parents():返回原始包装集所有元素的祖先元素的新包装集;如果指定了参数,那么该参数也是筛选表达式;


  prev():返回原始包装集元素的所有唯一的上一个兄弟元素组成的新包装集;如果指定了参数,那么该参数也是筛选表达式;


  prevAll():返回包含原始包装集元素的所有前面兄弟元素的新包装集;如果指定了参数,那么该参数也是筛选表达式;

  siblings():返回包含原始包装集元素中的所有唯一兄弟元素所组成的新包装集;如果指定了参数,那么该参数也是筛选表达式;


  find(String):返回包含原始包装集里与传入的选择器表达式相匹配的所有元素的新包装集,并且原始包装集中的元素的后代也会被传入新的包装集;


  contains(text):返回包含text参数所传入的文本字符串的元素所组成的新包装集;

  is(String):如果包装集中含有String匹配的元素,那么返回true,否则返回false;

  clone(copyHandle):如果传入的参数为true,那么会连带事件一起拷贝,否则不拷贝事件,形成一个新的包装集;

  end():在jQuery命令链内调用,以便返回退到前一个包装集;

  andSelf():合并命令链内最近产生的两个包装集;

  对于包装元素的操作就总结到这里,如果哪里不对的还请各位指出来方便大家参考学习。

详细出处参考:http://www.jb51.net/article/17900.htm


[jQuery技术]jQuery数据类型



jQuery除了包含原生JS中的内置数据类型(built-in datatype),还包括一些扩展的数据类型(virtual types),如Selectors、Events等。


1. String

 String最常见,几乎任何一门高级编程语言和脚本语言中都支持,比如"Hello world!"即字符串。字符串的类型为string。比如

 var typeOfStr = typeof "hello world";//typeOfStr为“string"

 1.1 String内置方法

   "hello".charAt(0) // "h"

   "hello".toUpperCase() // "HELLO"

   "Hello".toLowerCase() // "hello"

   "hello".replace(/e|o/g, "x") // "hxllx"

   "1,2,3".split(",") // ["1", "2", "3"]

 1.2 length属性:返回字符长度,比如"hello".length返回5

 1.3 字符串转换为Boolean:

    一个空字符串("")默认为false,而一个非空字符串为true(比如"hello")。


2. Number

 数字类型,比如3.1415926或者1、2、3...

 typeof 3.1415926 返回的是"number"

 2.1 Number转换为Boolean:

    如果一个Number值为0,则默认为false,否则为true。

 2.2 由于Number是采用双精度浮点数实现的,所以下面这种情况是合理的:

    0.1 + 0.2 // 0.30000000000000004


3. Math

 下面的方法与Java中的Math类的静态方法类似。

 Math.PI // 3.141592653589793

 Math.cos(Math.PI) // -1

 3.1 将字符串化为数字:parseInt和parseFloat方法:

     parseInt("123") = 123 (采用十进制转换)

     parseInt("010") = 8    (采用八进制转换)

     parseInt("0xCAFE") = 51966 (采用十六进制转换)

     parseInt("010", 10) = 10 (指定用10进制转换)

     parseInt("11", 2) = 3 (指定用二进制转换)

     parseFloat("10.10") = 10.1

3.2 数字到字符串

    当将Number粘到(append)字符串后的时候,将得到字符串。

     "" + 1 + 2; // "12"

     "" + (1 + 2); // "3"

     "" + 0.0000001; // "1e-7"

    或者用强制类型转换:

    String(1) + String(2); //"12"

    String(1 + 2); //"3"


4. NaN 和 Infinity

 如果对一个非数字字符串调用parseInt方法,将返回NaN(Not a Number),NaN常用来检测一个变量是否数字类型,如下:

 isNaN(parseInt("hello", 10)) // true

 Infinity表示数值无穷大或无穷小,比如1 / 0 // Infinity。

 对NaN和Infinity调用typeof运算符都返回"numuber"。

 另外 NaN==NaN 返回false,但是 Infinity==Infinity 返回true。


5. Integer 和 Float

 分为表示整型和浮点型。


6. BOOLEAN

 布尔类型,true或者false。


7. OBJECT

 JavaScript中的一切皆对象。对一个对象进行typeof运算返回 "object"。

 var x = {};

 var y = { name: "Pete", age: 15 };

 对于上面的y对象,可以采用圆点获取属性值,比如y.name返回"Pete",y.age返回15

 7.1 Array Notation(数组访问方式访问对象)

    var operations = { increase: "++", decrease: "--" }

     var operation = "increase";

     operations[operation] // "++";

     operations["multiply"] = "*"; // "*"

     上面operations["multiply"]="*"; 往operations对象中添加了一个key-value对。

7.2 对象循环访问:for-in

     var obj = { name: "Pete", age: 15};

     for(key in obj) {

        alert("key is "+[key]+", value is "+obj[key]);

     }

 7.3 任何对象不管有无属性和值,都默认为true

 7.4 对象的Prototype属性

       jQuery中用fn(Prototype的别名)动态为jQuery Instances添加对象(函数)

        var form = $("#myform");

        form.clearForm; // undefined

        form.fn.clearForm = function() {

           return this.find(":input").each(function() { this.value = ""; }).end();

        };

        form.clearForm() // works for all instances of jQuery objects, because the new method was added


8. OPTIONS

几乎所有的jQuery插件都提供了一个基于OPTIONS的API,OPTIONS是JS对象,意味着该对象以及它的属性都是optional(可选的)。允许customization。

 比如采用Ajax方式提交表单,

  $("#myform").ajaxForm();//默认采用Form的Action属性值作为Ajax-URL,Method值作为提交类型(GET/POST)

   $("#myform").ajaxForm({ url: "mypage.php", type: "POST" });//则覆盖了提交到的URL和提交类型


9. ARRAY

 var arr = [1, 2, 3];

 ARRAY是可变的lists。ARRAY也是对象。

 读取或设置ARRAY中元素的值,采用这种方式:

    var val = arr[0];//val为1

    arr[2] = 4;//现在arr第三个元素为4

 9.1 数组循环(遍历)

    for (var i = 0; i < a.length; i++) { // Do something with a[i] }

     但是当考虑性能时,则最好只读一次length属性,如下:

     for (var i = 0, j = a.length; i < j; i++) { // Do something with a[i] }

     jQuery提供了each方法遍历数组:

      var x = [1, 2, 3];

      $.each(x,

        function(index, value) {

            console.log("index", index, "value", value);

      });

 9.2 对数组调用push方法意味着将一个元素添加到数组末尾,比如 x.push(5); 和 x.[x.length] = 5; 等价

 9.3 数组其他内置方法:

    var x = [0, 3, 1, 2];

     x.reverse() // [2, 1, 3, 0]

     x.join(" – ") // "2 - 1 - 3 - 0"

     x.pop() // [2, 1, 3]

     x.unshift(-1) // [-1, 2, 1, 3]

     x.shift() // [2, 1, 3]

     x.sort() // [1, 2, 3]

     x.splice(1, 2) // 用于插入、删除或替换数组元素,这里为删除从index=1开始的2个元素

9.4 数组为对象,所以始终为true


10. MAP

 The map type is used by the AJAX function to hold the data of a request. This type could be a string, an array<form elements>, a jQuery object with form elements or an object with key/value pairs. In the last case, it is possible to assign multiple values to one key by assigning an array. As below:

 {'key[]':['valuea','valueb']}


11. FUNCTION:匿名和有名两种

 11.1 Context、Call和Apply

    In JavaScript, the variable "this" always refers to the current context.

   $(document).ready(function() {

        // this refers to window.document});

        $("a").click(function() { // this refers to an anchor DOM element

   });


12. SELECTOR

 There are lot of plugins that leverage jQuery's selectors in other ways. The validation plugin accepts a selector to specify a dependency, whether an input is required or not:

  emailrules: { required: "#email:filled" }

 This would make a checkbox with name "emailrules" required only if the user entered an email address in the email field, selected via its id, filtered via a custom selector ":filled" that the validation plugin provides.


13. EVENT

 DOM标准事件包括:blur, focus, load, resize, scroll, unload, beforeunload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, andkeyup


14. JQUERY

 JQUERY对象包含DOM元素的集合。比如$('p')即返回所有<p>...</p>

 JQUERY对象行为类似数组,也有length属性,也可以通过index访问DOM元素集合中的某个。但是不是数组,不具备数组的某些方法,比如join()。

 许多jQuery方法返回jQuery对象本身,所以可以采用链式调用:

 $("p").css("color", "red").find(".special").css("color", "green");

 但是如果你调用的方法会破坏jQuery对象,比如find()和filter(),则返回的不是原对象。要返回到原对象只需要再调用end()方法即可。