jQuery设计思想整理

97 阅读3分钟

一、jQuery 如何获取元素

jQuery('#xxx')返回值并不是元素,而是一个api对象
jQuery('#xxx').find('.red')查找 #xxx 里的.red元素
jQuery('#xxx').parent()获取爸爸
jQuery('#xxx').children()获取儿子
jQuery('#xxx').siblings()获取兄弟
jQuery('#xxx').index()[0]获取排行老几 (从0开始)
jQuery('#xxx').next()获取弟弟
jQuery('#xxx').prev()获取哥哥
jQuery('.red').each(fn)遍历并对每个元素执行fn

查找:

截屏2021-10-06 下午8.07.56.png

获取爸爸:

截屏2021-10-06 下午8.08.35.png

获取儿子:

截屏2021-10-06 下午8.09.09.png

遍历并对每个元素执行fn:

截屏2021-10-06 下午8.09.40.png

二、jQuery 的链式操作是怎样的

jQuery最终选中网页元素以后,可以对它进行一系列操作,并且所有操作可以连接在一起,以链条的形式写出来,比如:

$('test').find('.child').addClass('blue').end();

分解之后的写法:

$('.test')//找到test元素

.find('.child')//选择其中的child元素

.addClass('blue')

.end()//退回到选中的child元素的那一步

三、jQuery 如何创建元素

方法:把新元素直接传入jQuery的构造函数就行了

$('<div><span>1</span></div>');
$('<p>Hello</p>');
$('<li class="new">new list item</li>');
$('ul').append('<li>list item</li>');

四、jQuery 如何移动元素

一组方法是直接移动该元素,另一组方法是移动其他元素,使得目标元素达到我们想要的位置。

假定我们选中了一个div元素,需要把它移动到p元素后面。

第一种方法是使用.insertAfter(),把div元素移动p元素后面:

$('div').insertAfter($('p'));

第二种方法是使用.after(),把p元素加到div元素前面:

$('p').after($('div'));

表面上看,这两种方法的效果是一样的,唯一的不同似乎只是操作视角的不同。但是实际上,它们有一个重大差别,那就是返回的元素不一样。第一种方法返回div元素,第二种方法返回p元素。你可以根据需要,选择到底使用哪一种方法。

使用这种模式的操作方法,一共有四对:

 .insertAfter()和.after():在现存元素的外部,从后面插入元素
 .insertBefore()和.before():在现存元素的外部,从前面插入元素
 .appendTo()和.append():在现存元素的内部,从后面插入元素
 .prependTo()和.prepend():在现存元素的内部,从前面插入元素

五、jQuery 如何修改元素的属性

# .attr()

获取匹配的元素集合中的第一个元素的属性的值。设置每一个匹配元素的一个或多个属性。

attr()有四种用法,先列举表达式:

$(selector).attr(attribute) //返回被选元素的属性值。

$(selector).attr(attribute,value)  //设置被选元素的属性和值。

$(selector).attr(attribute,function(index,oldvalue)) //用函数返回值设置被选元素的属性和值。

$(selector).attr({attribute:value, attribute:value ...}) //为被选一个以上的元素设置属性和值。
# .prop()

获取匹配的元素集中第一个元素的属性(property)值为匹配的元素设置一个或多个属性(properties)。
# .removeAttr()

为匹配的元素集合中的每个元素中移除一个属性(attribute)。
# .removeProp()

为集合中匹配的元素删除一个属性(property)。
# .val()

获取匹配的元素集合中第一个元素的当前值。设置匹配的元素集合中每个元素的值。