上文介紹了利用$函數篩選頁面上的元素和替代onload事件。$函數還有一個作用,當它的參數是一個HTML片段的時候,它返回的是包含這個HTML元素的包裝集。例如:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jQuery Wrapper - Liehuo.net</title>
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript">
$(function() {
$("<p>I am a red line.</p>").css("color", "Red").appendTo("#foo");
});
</script>
</head>
<body>
<div id="foo">
</div>
</body>
</html>
$創造了一個p元素的包裝元素,這個包裝元素和用上文提到的選擇符選到的元素是一樣的。同樣也可以調用jQuery的一些方法,最后用appendTo(以后介紹)把這個元素移動到div里。最終結果是:
下面介紹對包裝集操作的函數。
1. html(),html(text). 第一個函數返回包裝集第一個元素內部的html,第二個函數將包裝集中的所有元素的內部html設置為text。
2.size()。返回包裝集包含的元素。
3.get(),get(n)。第一個函數將包裝集合內的HTML元素以javascript數組的形式返回,第二個元素返回第n個HTML元素。
4.index(elem). 返回傳入的HTML元素elem在包裝集中的位置。如果不在包裝集中,則返回-1。
5.add(s),add(elem),add(array). add函數用于向包裝集中添加元素。如果是選擇器,則添加所有被選中的元素,如果是HTML片段,則根據此片段創建HTML元素并添加此元素;如果是HTML元素或者HTML元素的數組,則直接添加。
6. not(expression),filter(expression). 這兩個函數是用來篩選包裝集的元素的。expression可以是一個字符串(選擇符),或者是html元素或者元素數組。not函數除去符合選擇符的元素或者包含在數組中的元素。filter則相反,留下符合選擇符的元素或者包含在數組中的元素。
7.slice(begin,end) 這個函數返回的是一個新建的包裝集,內容是原包裝集從第begin到第end個元素。end省略則表示最大長度。
先來看幾個例子。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jQuery Wrapper - Liehuo.net</title>
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript">
$(function() {
$('span').html($('li').size());
$('li').not('li:first').add('p:first').css('color', 'Red');
$('li').get(0).innerHTML = "First Special Item";
$('p:last').html($('li').html());
});
</script>
</head>
<body>
<ul>
<li>First Item</li>
<li>Second Item</li>
<li>Third Item</li>
<li>Forth Item</li>
<li>Fifth Item</li>
</ul>
<p>I am a lonely p.</p>
<p>The UL has <span></span> elements.</p>
<span>Hello jQuery.</span>
<p></p>
</body>
</html>