jQuery的其他常用知识点
选择器
- :visible 和 :hidden 匹配显示和隐藏的元素(css-display),需要指明元素或类,因为head、script等元素也是不可见的。
- :animate 处于动画的元素
- tr:nth-child(even) tr:nth-child(2n) 偶数行,odd 奇数行 3n 隔两行。(tr:even tr:odd)
- tr:nth-child(1)、tr:first、tr:first-child、$("tr").first() 、$("tr").eq(0) 拿到一样的
- tr:only-child 只有一个子元素的
- tr:gt(i) 拿到i之后的
- tr:lt(i) 拿到i之前的
- tr:not(".className") 获取不含指定类的
- input:not(:checkbox) 非复选框的input元素
- tr:contains(text) 获取包含给定文本的
- tr:empty 获取无子元素或文本的空元素
- tr:has(selector) 获取有匹配子选择器的元素
- tr:parent 获取含有子元素或者文本的元素
- tr:hidden 获取所有不可见元素 (通过.show()展示)
- tr:visible 获取所有的可见元素 (通过.hide()隐藏)
- tr[attribute=value] 属性选择器 *= ^= $= !=
- li:has(a) 包含a的li
- 针对表单元素的一些特殊选择器
:input 匹配的是 <input>,<textarea>,<select>,<button> :button 匹配 input[type=button|reset|submit]和button :file 即 input[type=file],同理还有 :checkbox,:radio :checked 勾上的单复选框 :disabled 和 :enabled 能和不能点击或输入的表单元素 :focus 匹配当前焦点元素 :checkbox:checked:disabled 匹配的是不能点击的已选中的复选框
API
prop() 和 attr()
prop() 方法用来改变影响DOM元素的动态状态,而不是改变HTML属性。比如: disabled、checked
clone()
参数是布尔值,代表是否复制事件,默认false。 $('.item').on('click', function(){}); $('.item').clone(true).appendTo('.list'); // 克隆 .item(包括事件)并添加到 .list
val()
设置或者返回表单元素(input、select、textarea)的值
replaceWith() 和 replaceAll()
<div id="app">hello jquery world.</div> var $e = $("div").replaceWith("<p>你好,jquery</p>"); 返回的是 div#app 的 jQuery 对象,但已从 dom 树中移除,页面呈现的是p。 而 $("<p>你好,jquery</p>").replaceAll("#app") 返回的是 p 的jQuery对象。
width() 和 height()
设置或者获取匹配元素的宽度和高度值,返回的是number(不带单位),而$(selector).css('width')返回的是string(带有单位)
offset()
获取匹配的第一个元素相对于 document 的位置 返回:{left: Number, top: Number} 设置:如果元素没有定位(即 position: static),将会修改为 relative 注意:jQuery不支持获取隐藏元素的偏移坐标。同样的,也无法取得隐藏元素的 border, margin, 或 padding 信息。 若元素的属性设置的是 visibility:hidden,那么我们依然可以取得它的坐标。但是若设置的属性是 display:none,由于在绘制 DOM 树时根本就不绘制该元素,所以它的位置属性值是 undefined。
position()
获取匹配的第一个元素相对于其最近的具有定位(即position不是static)的父元素的位置 返回 {left: Number, top: Number} 不能设置。 注意:jQuery不支持获取隐藏元素的偏移坐标及所占用的边框,边距和填充的大小
scrollLeft() 和 scrollTop()
获取或者设置匹配的第一个元素水平和垂直方向的位置,数值类型 垂直滚动条位置 是可滚动区域 在 可视区域上方的 被隐藏区域的高度。 如果滚动条在最上方没有滚动 或者 当前元素没有出现滚动条,那么这个距离为0 回顶部代码 $('html,body').scrollTop(0);兼容IE 和 Chrome,瞬间回到顶部。
事件
标准事件类型
- click mouseup mousedown ...
- keypress ...
- dblclick mousewheel
- change 用在 input select 元素上
- $(window).resize 调整浏览器窗口大小时触发的事件
事件绑定 bind()、delegate() 和 on()
bind()在1.7以后被on()取代,绑定多个事件:$(selector).on('dblclick contextment', function(){}); on()也兼容zepto。但是这两种方法的缺点是要绑定的元素必须存在文档中。语法: $(selector).on('events'[, 'selector'][, data], handler); 其中第一个参数可以是标准事件名,也可以是自定义事件(通过trigger触发),第二和第三个参数可以省略,第二个参数为匹配元素的后代元素,第三个参数为传递给处理函数的数据,即在函数中通过 event.data 来接收。 delegate() 支持对动态创建的元素有效。语法:$('div').delegate('p', 'mousemove', function(){}); 为div下面的p(包括未来产生的)绑定mousemove事件。
事件解绑 unbind()、undelegate() 和 off()
不传参数就解绑匹配元素的所有事件,否则就解绑指定参数的事件。 $(selector).off('click', '**'); 解绑所有代理的click事件,而元素本身的事件不会被解绑。
事件触发 trigger() 和 triggerHandler()
简单触发:$(selector).click(); trigger()触发事件,触发浏览器行为。$(selector).trigger("click"); triggerHandler()触发事件响应方法,不触发浏览器行为。$(selector).triggerHandler("focus");
事件对象event
event.data 传递给事件处理程序的额外数据 event.currentTarget 等同于this,指当前DOM对象 event.target 触发事件源,不一定是等同this(通常在事件委托中出现) event.type 事件类型 event.which 鼠标的按键类型:左1 中2 右3 或者键盘码 event.keyCode 键盘码 event.pageX 鼠标相对于文档左部边缘的位置
动画
通常第一个参数为速度(fase、normal、slow、ms),第二个参数为一个函数,动画完成后执行。
- show() 和 hide() 实现显示和隐藏,可同时改变 width、height、opacity。toggle() 切换状态。
- fadeIn() 和 fadeOut() 淡入淡出,仅改变 opacity
- fadeTo() 按指定透明度进行渐进式调整
- slideUp() 和 slideDown() 卷窗帘效果,仅改变 height。slideToggle() 切换状态。
- animate() 自定义动画
动画的停止与延时 stop()、delay()
AJAX
$.ajax({ beforeSend(){} // 发送请求之前调用的匿名函数,如果 return false; 就代表阻止该次请求,可以用于验证用户输入的数据 })
链式编程
原理: return this; 通常只有设置操作才可以链式操作,获取操作时返回相应的值,无法返回this。 end() 结束当前链最近的一次过滤操作,并且返回匹配元素之前的状态。
多库共存
jQuery占用了$ 和jQuery这两个变量,如果同一个页面引用了jQuery库,还引用了其他库或者其他版本的jQuery也用的了$或jQuery这个变量,为了保证每个库都能正常使用,就需要让jQuery交出变量的控制权。 $.noConflict(); 交出$ $.noConflict(true); 交出$ 和 jQuery <script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script> <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script> <script> // 查看版本 console.log($.fn.jquery); // 3.2.1 console.log(jQuery.fn.jquery); // 3.2.1 </script> <script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script> <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script> <script> $.noConflict(); console.log($.fn.jquery); // 2.2.4 console.log(jQuery.fn.jquery); // 3.2.1 </script> <script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script> <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script> <script> $.noConflict(true); console.log($.fn.jquery); // 2.2.4 console.log(jQuery.fn.jquery); // 2.2.4 </script>
相关推荐
83510998 2020-08-08
tthappyer 2020-07-25
tztzyzyz 2020-07-05
87281248 2020-07-04
82244951 2020-06-28
89510194 2020-06-27
牵手白首 2020-06-14
开心就好 2020-06-10
EdwardSiCong 2020-11-23
85477104 2020-11-17
hhanbj 2020-11-17
81427005 2020-11-11
seoppt 2020-09-13
honeyth 2020-09-13
WRITEFORSHARE 2020-09-13
84483065 2020-09-11
momode 2020-09-11
85477104 2020-08-15