最近在學習jQuery方面的知識,學習中遇到一定的困難,一些知識不得不查看官方的文檔,在用到end()方法時,被一個小例子搞得有點暈。
在官方的API上是這樣描述end()方法的:“回到最近的一個"破壞性"操作之前。即,將匹配的元素列表變為前一次的狀態。”;
看樣子好像是找到最后一次操作的元素的上一元素,在如下的例子中:
html代碼:
<div>測試內容1</div><div>測試內容2</div>
jQuery代碼:
$('<p>新增內容</p>').appendTo('div').addClass('c1').end().addClass('c2');
得到的結果是:
<div>測試內容1 <p class="c1 c2">新增內容</p></div>
<div>測試內容2 <p class="c1">新增內容</p></div>
這里我就有一點不太明白了,怎么只有第一個<p>標簽有兩個樣式,end()方法后返回的是什么,在火狐里添加了監控,得到如下結果:
1.$('<p>新增內容</p>').appendTo('div')返回的是:[p,p]對象數組,即新增后的兩個p標簽;
2.$('<p>新增內容</p>').appendTo('div').addClass('c1')返回的是:[p.c1,p.c1]對象數組,即添加了c1類樣式后的p對象數組;
3.$('<p>新增內容</p>').appendTo('div').addClass('c1').end()返回的是[p.c1],是第1個<div>中的<p>,在2操作中,最后“破壞”的是第2個<div>中的 <p>,所以他的前一次操作的對象是第1個<div>中的<p>,返回的就是它;
4.$('<p>新增內容</p>').appendTo('div').addClass('c1').end().addClass('c2')返回的仍然是第1個<div>中的<p>;
現在算是有點明白了,關鍵是要搞清楚最后一次操作的元素的上一元素是什么。
出處:http://slmm.cnblogs.com/