jq常用的总结

jquery 选择器的性能优化

  • 尽量使用css中有的选择器
  • 避免过度约束
  • 尽量以ID开头
  • 让选择器的右边有更多的特征
  • 避免使用全局选择器
  • 缓存选择器结果

提取元素

  • $(..).get() 返回所有doem对象的集合,==增强型==
  • $(..).get(index) 返回第index的doem对象的集合,
  • $(..)[index] 返回第index的doem对象的集合,可以使用负数
  • $(..).eq(index)返回 第index的 jQuery对象可以使用负数
    .eq()与筛选 :eq() 差不多 但是我们建议使用.eq();
    
  • $(..).toArrey 返回dom数组,

jquery 对象的其他操作

  • $(…).is() 返回的是一个布尔值!
  • end() 这个是返回的上一个对象, 对有破坏性的操作jq对象的返回
1
$('li').find("a").css(....)//这时返回的就不是$('li')对象了, 在此的链式的调用就会得不到你想要的结果,这时你就可以使用.end() 返货上一级的操作,

-addBack() 包含自己的意思

class增删切换

  • .toggleClass() 里面可以写两个类名
    ex:

    1
    $().toggleClass("red heid")

    如果存在red就切换heid 反之!

  • 还可以使用函数的
    1
    2
    3
    4
    5
    6
    7
    $("div").click(function() { //index 表示下标 value 表示
    $(this).toggleClass(
    function(index, value)
    return parseFloat(value) * 1.2;
    }
    );
    });

转换元素

  • .map() 就是jq的对象转换为另一个jq对象
1
2
3
4
$('div').map(function(index,domElement){
return domEleement //这里会返回div的所有的jq对象[this]
//如果返回的是undfind || null 就相当于这个元素被我跳过,不会返回这个原素
})

遍历jq 但是不需要改变

1
2
3
4
$('div').each(function(index,domElement){// 如果想终止循环就 给return true就跳过这个循环进入下一个 ;false的话就 以后的循环都不执行了
console.log(domElement)
})

特性attributes VS 属性properties

  • attributes:值为 string
  • properties : 值为 string boolean number、 object

    操作原素的特性 //可大小写

  1. 获取特性的值:attr(name)
  2. 设置特性的值:attr(name,value) ;attr(object) 里面还可以的一个函数
  3. removeAttr() 删除特性 可以多个删除 加空格

    操作原素的属性 、、不可小写

  4. prop()
  5. prop(name) 只能设置一个不可多个 用于input的选中
  6. removeProp(name)

    再元素中存取数据

    • ==获取==:data([name]) //这个可以获取HTML中的data-??中的属性值,也可以获取 js中设置的值,但是优先级是js的高。
  • ==设置==:data(name,value) data(object) 设置的属性在HTML中是看不见的,可以设置多个用{…};
  • ==删除数据== removeData([name]) 只能删除js只设置的;
  • ==判断== jQuery.hasData(element) 这里只能是dom对象不是jq对象

###获取或设置元素尺寸

  • width(value)
  • height(value)

  • innerHeight(vlue) //包含内边距,不包含边框和外边距

  • innerWidth(value)//包含内边距,不包含边框和外边距
    -传入true 就包含外边距
    -outerWidth(valu) //包含内边距和边框 不一定包含外边距
    -outerHeight(valu) //包含内边距和边框 不一定包含外边距

获取或设置位置的滚动

-offset() 返回 top let 的对象 是相对于document

  • position() 放回离自己最近的相对定位时的父元素 否则就相对document
  • scrollTop(value)

    包裹元素

  • wrap(wrapper) 把谁的集合一次在 外面包裹了shiu
  • wrapAll(wrapper) 把谁的集合 外面包裹了谁
  • wrapInner(wrapper) 把这个元素的内容包裹在
  • UNwrap() 取消包裹
  • 删除元素

-detach() 不像remeve()一样,他会保留数据和事件
-empty() 删除内容

复制替换元素

.clone([Even[,deepEven]]) 第一个是否复制自己的事件 和数据,第二个是否深度复制

jq 事件的出发 还可以传入参数

  • triggerHandler()
  • trigger();

    ==triggerHandler 相比 trigger==
    1. 不会触发浏览器默认事件;
    2. 不会产生事件冒泡;
    3. 只触发jq对象集合中的第一个元素的事件处理函数;
    4. 返回的是事件处理函数的返回值,而不是jq对象。

jq 插件机制

  • 扩展jq对象上的方法:jquery.fn.extend()
  • 扩展jq 工具方法:jquery.extend()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
(function($) {
var namespace = 'colorful';
var methods = {
init: function(options) {
options = $.extend({}, $.fn[namespace].defaults, options);
if (options.font) {
this.css('color', options.color);
}
if (options.background) {
this.css('background-color', options.color);
}
return this;
}
};
$.fn[namespace] = function(method) {
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if ($.type(method) === 'object') {
return methods.init.apply(this, arguments);
} else {
$.error('Method' + method + ' does not exist!');
}
};
$.fn[namespace].defaults = {
color: 'red',
background: false,
font: true
};
})(jQuery);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. A asperiores assumenda atque cum cupiditate debitis dolore doloribus illum inventore, magnam pariatur placeat similique suscipit! A accusantium cum dolore numquam optio.</p>
<script src="../../vendor/jquery-1.12.4.js"></script>
<script src="jquery.colorful.js"></script>
<script>
$(function() {
$('p').colorful({
background: true,
font: false
}).css('font-size', '30px');
});
</script>
</body>
</html>

本文标题:jq常用的总结

文章作者:cuijian

发布时间:2018年05月28日 - 17:05

最后更新:2018年07月02日 - 15:07

原始链接:http://www.cuijiajun.xin/jq.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

支持原创,你想给多少就多少!