zhangyusng 2018-03-03
【前言】
结合教程和说明文档,这里我记录下Swiper中相关的DOM操作
【目录列表】
(1)Classes类;
(2)属性;
(3)数据存储;
(4)CSS transform变换和 transitions过渡;
(5)事件;
(6)styles样式;
(7)Dom操作
【详解】
(1)Classes类操作
①.addClass(className) 给元素增加class---mySwiper.$el.addClass('MyClass');
②.removeClass(className) 删除指定的class
③.hasClass(className) 判断元素上是否有指定的class
④.toggleClass(className) 有则删除,无则添加
(2)属性操作
①.attr(attrName) 获取一个属性值
②.attr(attrName, attrValue) 设置一个属性值
③.attr(attributesObject) 设置多个属性值
④.removeAttr(attrName) 删除属性值
(3)数据存储
①.data(key, value) 在选中的元素上存储任意数据
②.data(key) 如果只有一个参数,则读取指定的值,如果有两个参数 data(key, value) 则是设置值------与属性操作attr()类似,.attr(attrName)获取属性值和.attr(attrName, attrValue)设置值
(4)CSS transform变换和 transitions过渡
①.transform(CSSTransformString) 添加带前缀的transform 样式:
swiper.slides.eq(0).transform('scale(0.8) translateX(100px)')
②.transition(transitionDuration) 设置css transition-duration 属性;
(5)事件
①.on(eventName事件名称, handler处理程序, useCapture) 在选中的元素上绑定事件
②.on(eventName, delegatedTarget授权目标, handler, useCapture) 通过代理绑定事件
③.once(eventName, handler, useCapture) 添加回调函数或者事件句柄,这些事件只会执行一次
④.off(eventName, handler, useCapture) 删除事件绑定
⑤.off(eventName, delegatedTarget, handler, useCapture) 删除通过代理绑定的事件
⑥.trigger(eventName, eventData) 触发选中元素上的事件,指定所有的事件回调函数
⑦.transitionEnd转换结束(callback, permanent永久) 在选中的元素上增加转换结束 transitionEnd事件回调
(6)Styles样式
①.offset() 获取当前选中元素的第一个元素相对 document 的位置偏移
②.css(property属性) 获取选中元素中第一个元素的CSS属性值
③.css(property, value) 设置全部选中元素中的CSS属性值
mySwiper.slides.css("background-color", "yellow") mySwiper.slides.css({"background-color":"yellow", "z-index":1})
(7)Dom操作
案例代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>测试</title> <style type="text/css"> div{ width: 100px; height: 100px; background-color: #00bcd4; } </style> </head> <body> <div class="one">我是1</div> <div class="one">我是2</div> <div class="one">我是3</div> <script src="./jquery.min.js"></script> </body> </html>接下来依次实验Demo操作:
①.each(callback) 遍历集合,对其中每一个元素执行回调
$(function(){ var value = $("div").each(cb); function cb(){ console.log("回调函数") } })
②.html() 获得选中的第一个元素的HTML内容
$(function(){ var value = $("div").html(); console.log(value) })
③.html(newInnerHTML) 给全部选中元素设置HTML内容
$(function(){ var value = $("div").html('更改内容'); console.log(value) })
④.text() 获得选中的元素的文本内容
例如:获取所有class为'one'的元素的内容:
$(function(){ var value = $("div").text(); console.log(value) })
⑤.text(newTextContent) 给全部选中元素设置文本内容
例如:设置所有class为'one'的元素的内容:
$(function(){ var value = $("div").text('更改'); console.log(value) })
注意:关于.text()和.html()的区别,我在文章.text()与.html()区别里做了总结
⑥.val() 获取或修改表单元素的value值
<input class="two" value="235"> <script> $(function(){ console.log("获取input的value值"+$(".two").val()); var change = $(".two").val("修改235"); console.log(change) }) </script>
⑦.is(CSSSelector) 选中的元素是否符合指定的CSS选择器,返回布尔值
$(function(){ var value = $("div").is('.one'); console.log(value); })
⑧.is(HTMLElement) 选中的元素是否是给定的 DOM 元素或者 Dom7 集合
$(function(){ var value1 = $("div").is('form'); console.log(value1); var value2 = $("div").is('div'); console.log(value2); })
⑨.index() 当前选中第一个元素在他的所有兄弟节点中的排序(从0开始)
$(function(){ var value1 = $("div").index(); console.log(value1); })
⑩.eq(index) 返回当前选中的元素中的指定序号的元素
$(function(){ var value2 = $("div").eq('1'); console.log(value2);//这里会输出"我是2"的标签 })
swiper里:
mySwiper.slides.eq(0).addClass('className');
⑪.append(HTMLString/HTMLElement) 译为附加(HTML字符串或元素),在当前选中元素的每一个后面插入指定内容,即字符串或元素标签
添加字符串:
$(function(){ var value2 = $("div").eq('1').append('我是append到后面的'); console.log($("div").eq('1').text()) })
添加元素:
<style type="text/css"> .append{color:red;} </style> <script> $(function(){ var value2 = $("div").eq('1').append('<div class="append">附加元素</div>'); console.log($("div").eq('1').text()) }) </script>
⑫.prepend(newHTML) 翻译为前置()在当前选中元素的每一个前面插入指定内容
前置HTML元素:
<style type="text/css"> .append{ color: red; } </style> <script> $(function(){ var value2 = $("div").eq('1').prepend('<span class="append">前置元素</span>'); console.log($("div").eq('1').text()) }) </script>
前置字符串:
<script> $(function(){ var value2 = $("div").eq('1').prepend('前置元素'); console.log($("div").eq('1').html()) }) </script>
⑬.insertBefore(target)把当前选中的每一个元素插入到指定的目标之前。目标(target)应该是一个 CSS 选择器或者 HTML 元素 或者 Dom7集合;
对应的.insertAfter(target)插入到目标之后
.insertBefore(target)插入目标之前:
$(function(){ var value2 = $("div").eq('1').insertBefore($("div").eq('0')); //现在"我是2"被插入到了"我是1"的前面 })
.insertBefore(target)插入目标之后:
$(function(){ $("div").eq('1').insertAfter($("div").eq('2')); //现在"我是3"被插入到了"我是2"的前面 })
⑭next() 获得匹配元素集合中每个元素紧邻的同胞元素。如果提供选择器,则取回匹配该选择器的下一个同胞元素
$(function(){ var value = $("div").eq('1').next(); //,因为没有提供选择器,所以这里会获取"我是2"的紧邻的(所有)同胞元素 console.log(value) })
提供选择器,过滤兄弟元素:
<div class="one">我是1</div> <div class="three">我是1的兄弟元素</div> <div class="one">我是2</div> <div class="four">我是2的兄弟元素</div> <div class="one">我是3</div> <div class="three">我是3的兄弟元素</div> <script src="./jquery.min.js"></script> <script> $(function(){ var value = $("div").next('.four'); console.log(value);//这里只会输出类名有"four"的兄弟元素 }) </script>
⑮.nextAll([selector]) 获得当前选中的每一个元素之后的全部兄弟元素。如果提供了一个选择器(selector),那么会用这个选择器来过滤这些兄弟元素
注意:.next([selector])与.nextAll([selector])的区别
next:同级元素中紧贴着的后面一个元素;nextAll:同级元素中后面所有的元素
<div class="one">我是1</div> <div class="three">我是1的兄弟元素</div> <div class="one">我是2</div> <div class="four">我是2的兄弟元素</div> <div class="one">我是3</div> <div class="three">我是3的兄弟元素</div> <script src="./jquery.min.js"></script> <script> $(function(){ var next = $("div").eq(0).next(); console.log(next); var nextAll = $(".one").next(); console.log(nextAll) }) </script>
⑯.parent([selector]) 获取选中元素的直接父元素。如果提供了一个选择器(selector),那么会用这个选择器来过滤这些父元素
.parents([selector]) 获取选中元素的祖先元素
<div class="parents"> <div class="parent"> <div class="one">我是1</div> <div class="three">我是1的兄弟元素</div> <div class="one">我是2</div> <div class="four">我是2的兄弟元素</div> <div class="one">我是3</div> <div class="three">我是3的兄弟元素</div> </div> </div> <script src="./jquery.min.js"></script> <script> $(function(){ var parent = $(".one").eq(0).parent(); console.log(parent); var parents = $(".one").eq(0).parents(); console.log(parents) }) </script>
⑰.find(selector) 在选中的每一个元素的后代中查找指定的元素
.find() 方法获得当前元素集合中每个元素的后代,通过选择器、jQuery 对象或元素来筛选
<div class="parents"> <div class="parent"> <div class="one">我是1</div> <div class="three">我是1的兄弟元素</div> <div class="one">我是2</div> <div class="four">我是2的兄弟元素</div> <div class="one">我是3</div> <div class="three">我是3的兄弟元素</div> </div> </div> <script src="./jquery.min.js"></script> <script> $(function(){ var parent = $(".parent").find('.four'); console.log(parent); }) </script>
⑱.children(selector) 在选中的每一个元素的直接子元素中查找指定的元素
$(function(){ var children = $(".parent").children(''); console.log(children); })
由选择器筛选是可选的,例如:
$(function(){ var children = $(".parent").children('.four'); console.log(children); })
注意:.children()与.find()区别
.children()获取的是该元素的下级元素,而通过.find()获取的是该元素的下级所有元素
例如:
<div class="parents"> <div class="parent"> <div class="one">我是1</div> <div class="three">我是1的兄弟元素</div> <div class="one">我是2</div> <div class="four">我是2的兄弟元素</div> <div class="one">我是3</div> <div class="three">我是3的兄弟元素</div> </div> </div> <script src="./jquery.min.js"></script> <script> $(function(){ var children = $(".parents").children('.four'); console.log(children.text()); var find = $(".parents").find('.four'); console.log(find.text()); }) </script>
这里可以发现.children()获取不到.four的值,若想用.children()方法获取,可以这样写
var children = $(".parents").children().children('.four'); console.log(children.text());
⑲.remove() 从DOM中删除选中的元素
<div class="parents"> <div class="parent"> <div class="one">我是1</div> <div class="three">我是1的兄弟元素</div> <div class="one">我是2</div> <div class="four">我是2的兄弟元素</div> <div class="one">我是3</div> <div class="three">我是3的兄弟元素</div> </div> </div> <script src="./jquery.min.js"></script> <script> $(function(){ var value = $(".parents").find('.four').remove(); console.log(value); }) </script>
⑳.add() 增加一个元素
<button>添加一个span元素</button> <p>一个P元素。</p> <script> $(document).ready(function(){ $("button").click(function(){ $("p").add("<br><span>一个新的span元素。</span>").appendTo("p"); }); }); </script>