@omg-two
2017-01-10T02:16:59.000000Z
字数 4116
阅读 655
jQuery
学习笔记
浏览器工作原理
//传统原生的创建方法:
var body = document.querySelector('body');
document.addEventListener('click',function(){
//创建2个div元素
var rightdiv = document.createElement('div')
var rightaaron = document.createElement("div");
//给2个div设置不同的属性
rightdiv.setAttribute('class', 'right')
rightaaron.className = 'aaron'
rightaaron.innerHTML = "动态创建DIV元素节点";
//2个div合并成包含关系
rightdiv.appendChild(rightaaron)
//绘制到页面body
body.appendChild(rightdiv)
},false)
//jQuery方式
var $button = $('button');
var $body = $('body')
$button.on('click', function() {
//通过jQuery生成div元素节点
var div = $("<div class='right'><div class='aaron'>动态创建DIV元素节点</div></div>")
$body.append(div)
})
节点插入的说明如下:
将B、C等插入到A
- .empty():移除指定元素中的所有子节点,无法删除自身,无法删除绑定的方法。
- .remove():移除指定元素及其内部一切,包括绑定的事件及与该元素相关的jQuery数据。
- 当传入选择器表达式时,则根据选择表达式进行过滤,选择性删除指定节点
- 下面两个例子等价
//利用remove的传入参数进行过滤
$("p").remove(":contains('3')")
//通过filter进行过滤
$("p").filter(":contains('3')").remove()
- .detach():移除节点,但保存节点上的数据与事件,append之后,即可恢复。
- 移除自身,仅仅是显示效果从web上消失了,但内存中任然存在。
- 不接受参数传入。
元素的克隆
- .clone()
- 复制所有匹配的元素集合,包括匹配元素的下级元素,文字节点。
- 克隆的同时,可以修改克隆后元素。如
$(this).clone().css('color','red')
- 当传入true参数时,则将附带的事件以及数据一起克隆。如下例:
$("div").on('click', function() {//执行操作})
//clone处理一
$("div").clone() //只克隆了结构,事件丢失
//clone处理二
$("div").clone(true) //结构、事件与数据都克隆
元素的替换
- .replaceWith()
- 对
$(A).replaceWith(B)
,则表示用新的内容B(HTML字符串/DOM元素/jQuery对象)来替换选中的A。- replaceWith()方法返回的jQuery对象引用的是替换前的节点,而不是通过replaceWith/replaceAll方法替换后的节点。
- 该方法会删除与节点相关联的所有数据和事件处理程序。
//后面的css()增加的内容实际上没有显示出来,因为返回值是替换前的对象。
$(".right > div:first p:eq(1)").replaceWith('<a style="color:red">replaceWith替换第二段的内容</a>').css('border','4px solid blue')
- replaceAll()
- 用集合的匹配元素替换每个目标元素。与replaceWith()的目标和源相反。
- 该方法会删除与节点相关联的所有数据和事件处理程序
- replaceAll()方法返回的jQuery对象引用的是替换后的节点。
//后面的css()增加的内容实际上显示出来了,因为返回值是替换后的对象。
$('<a style="color:red">replaceAll替换第六段的内容</a>').replaceAll('.right > div:last p:last').css('border','4px solid blue');
元素的包裹
- wrap()
- wrap(wrappingElement):在匹配集合的每个元素周围包裹一个HTML结构
- wrap(function):一个回调函数,返回用于包裹匹配元素的HTML内容或jQuery 对象。使用后的效果与直接传递参数是一样,只不过可以把代码写在函数体内部,写法不同而已。
//给所有p元素,增加父容器div
//传入HTML字符串
$('p').wrap('<div></div>')
//传入函数方法
$('a').wrap(function() {
return '<div class="' + $(this).text() + '" />';
})
unwrap()
删除匹配元素集合的父元素保留自身在原来的位置。wrapAll()
- wrapAll(wrappingElement):给集合中匹配的元素增加一个外面包裹HTML结构。
- wrapAll(function):一个回调函数,返回用于包裹匹配元素的HTML内容或jQuery对象。
//---------------样例-----------------------
<p>p元素</p>
<p>p元素</p>
//---------------wrapAll方法一---------------
$('p').wrapAll('<div></div>')
//方法一结果
<div>
<p>p元素</p>
<p>p元素</p>
</div>
//---------------wrapAll方法二---------------
$('p').wrapAll(function() {
return '<div><div/>';
})
//方法二结果
<div>
<p>p元素</p>
</div>
<div>
<p>p元素</p>
</div>
- wrapInner()
- wrapInner(wrappingElement):给集合中匹配的元素的内部,增加包裹的HTML结构。
- wrapInner( function ) :允许我们用一个callback函数做参数,每次遇到匹配元素时,该函数被执行,返回一个DOM元素,jQuery对象,或者HTML片段,用来包住匹配元素的内容。
//---------------样例---------------
<p>p元素</p>
<p>p元素</p>
//---------------wrapInner方法一---------------
$('p').wrapInner('<div></div>')
//方法一结果
<div>
<p>p元素</p>
</div>
<div>
<p>p元素</p>
</div>
//---------------wrapInner方法二---------------
$('p').wrapInner(function() {
return '<div><div/>';
})
//方法二结果
<div>
<p>p元素</p>
</div>
<div>
<p>p元素</p>
</div>
children()
- $(A).children(),无参数的时候,查找A条件下匹配的所有元素的子元素(父子关系)。
- $(A).children(B),有参数的时候,查找A条件下匹配的元素经过B条件筛选后的集合的子元素(父子关系)。
find()
- 后代关系查找(包括父子关系),必须传入筛选参数。若匹配所有元素,传入 * 。
- $(A).find(B),表示满足匹配条件A的所有元素,再对其后代元素进行筛选满足B条件的元素集合。
parent()
- $(A).parent(),父元素查找,有序的查找匹配集合A元素的父元素。
- $(A).parent(B),有序的查找匹配集合A元素的父元素,并根据条件B进行筛选。
parents()
- $(A).parents(),无参数传入的时候,查找A条件匹配元素集合的所有祖辈元素(包括父辈)。
- $(A).parents(B),有参数传入的时候,首先查找A条件匹配元素集合的所有祖辈元素,然后过滤出满足条件B的元素集合。
closest()
- 该方法接受一个匹配元素的选择器字符串,如
$(A).closest(B)
匹配条件A的元素集合中每个元素从自己向上查找满足条件B的第一个元素结果的集合,next()
- 无参数接受,返回匹配集合中每一个元素的下一个兄弟元素。
- 有参数接受,利用接受参数对1中无参数返回结果进行筛选。
prev()
- 无参数接受,返回匹配集合中每一个元素的上一个兄弟元素。
- 有参数接受,利用接受参数对1中无参数返回结果进行筛选。
siblings()
- 无参数接受,返回匹配集合中每一个元素的同辈(上一个和下一个两个)兄弟元素。
- 有参数接受,利用接受参数对1中无参数返回结果进行筛选。
add()
- 在既有的jQuery对象中插入新的元素,从而构成一个新的包含更多元素的jQuery对象。
- add()的参数可以几乎接受任何的$(),包括一个jQuery选择器表达式,DOM元素,或HTML片段引用。
each()
- each是一个for循环的包装迭代器。
- each通过回调的方式处理,并且会有2个固定的实参,索引与元素。如下所示。
- each回调方法中的this指向当前迭代的dom元素。
//示例,each的回调函数及参数。
$("li").each(function(index, element) {
//index 索引 0,1
//element是对应的li节点 li,li
//this 指向的是li
})