jquery常用方法使用(一)
对于学习前端的同学来说,jq是非常耳熟能详的。在没有出现vue,react时,jq可以说是在相当一段的时间被很多公司采用,但是后来随着react等框架的诞生,其也慢慢的被之取代。对于jq它相对于原生js来说有什么好处呢,那就是jq中封装了很多的方法,几乎涵盖了前端大部分的操作,使用jq于原生js来说,能减少很大的代码量,例如在原生js中几百行的代码在jq中可以几十行就可以将其代替。还有一点就是在jq中的一个特色就是链式的调用过程。那么对于jq大家也不需要去记住其封装的所有的方法,只需要记住常用的方法即可。有需要的可以去查官方的文档去了解jq的其他方法。我会在接下来的内容中介绍一些常用的方法,对于jq大家也不需要去花太多时间学习,关键是学好原生js那么当你使用jq时,直接拿来就能使用。
首先来了解一下jq的安装,在官网上https://www.w3school.com.cn/jquery/jquery_install.asp可以了解到那么在这里我主要是想说在jq下载的安装包中有两个文件需要注意一个是jquery.js 另外一个是jquery.min.js这两个文件的区别在于,后者是前者代码的压缩,在你的项目中你只需要引入其中的一个文件即可使用jq中的方法。但是通常情况下我们都会使用后者,因为后者封装的代码量相对于前者来说少了很多。如果你想去了解jq源码那么就安装第一种。在项目开发的过程中使用压缩版会更好。
接下来就是对于整个jq常用的使用方式进行说明:
1.$()此方法表示的是获取dom节点等,只需要在其内部传入像css选择器那样的形式来选择元素即可。例如:$('.name') ,$('#id')等。
2.attr()方法,当直接调用这个方法并传入一个参数时,参数为属性名称,此时表示的获取到此属性的值,当在内部传入两个参数即属性名称与属性值时,表示将改变此时的属性值为当前设置的属性值。prop()其使用与attr()代表的意思相同,只不过其返回的结果为false与true
3.html()与原生中得innerHTML()作用相同,都是强制性将内部的字符串中的内容进行强制转化,同上面attr()方法所说参数一致,当之间调用时,就是获取到当前属性值,在其内部添加内容时就是将节点上的内容进行转换成内部的参数值。text()与原生的innderTEXT方法类似不能强制的去转化标签中的元素而是将js中的字符串输出打印到页面上。
4.css()方法,如果向其内部传入两个参数例如css('color','red')表示的意思是就是改变调用该方法节点的样式,如果是多个的样式进行设置就像css()内部传入一个对象css({'color' : 'red', 'background-color' : 'black'})如同实例一样即可
5.removeClass()去移除掉节点中的class属性名称,如果向其内部传入属性的名称,就只删除掉对应的class属性名称,如果不向其内部传入任何一个参数,调用该方法,表示去删除掉该节点中的所有class属性。 addClass(),向节点中去设置属性的名称 在removeClass()和addClass()中,可以向这个方法的内部传入参数,只不过最后返回的内部必须是一个字符串,用于来当做class名 toggleClass()检查节点中是否含有该参数中的属性名,如果有就删除,如果没有就添加。
6.eq(),在其内部传入参数为index时,就能找到相应节点的位置。其用法有两种$('li:eq(0)').css('color','red') $('li').eq(2).css('color','blue')这两种方式表示的就是选取到具体的dom元素并对其样式进行设置。
7.A.insertBefore(B)将A插入到B之前,具有剪切的功能;A.before(B)表示的意思是B在A的前面,可以理解成A后面的节点是B $('li').eq(4).insertBefore($('li:eq(0)')).css('color','blue')//在此时操作的是li中的索引值为4的li $('li:eq(0)').before( $('li').eq(4)).css('color','red')//此时操作的是li中的索引值为0的li
8.$('p').appendTo('.wrapper')//表示将A中的节点插入到B之后的最后一个节点 $('.wrapper').append($('p')) 表示在A之后添加一个新的节点 $('button').click(function() {$('.wrapper').append(item1).append(item2) })
9.这里所有说的就是remove()与detach()的区别,两者的不同就是remove()方法去移除时,会取消掉这个事件的绑定,而detach不会,两者的作用是把元素删除后返回$('.item1').click(function(){item1 = $(this).remove()}) $('.item2').click(function(){item2 = $(this).detach()})
10.on(),用于时间的绑定里面有四个参数 下面这种方式是on()方法中传入两个参数时的使用方法$('.item1').on('click',function(e){ console.log('item1') }) 当on()传入三个参数时,当第二个参数为数组或者是对象时,在回调函数中去传入参数e,然后使用e.data去调用时能够输出打印出第二个参数;当第二个参数是字符串是,其就会被理解为事件源,只有点击该事件源时,才会有点击事件$('.item1').on('click', {name: '123'} ,function(e){console.log(e.data.name)})
11.off()解除事件绑定$('.item1').off('click')
12.one()只绑定一次事件$('.item1').one('click',function(){console.log('item1')})
13.在jq当中去添加标签的方法$('.wrapper').append('<div class = "item3">item3</div>')
14.scrollTo()滚动出去的高度:$(window).scrollTo()
15.innerWidth() 表示调用该方法的dom节点的宽度,其宽度包括 content padding outerWidth() 表示调用该方法的dom节点的宽度,其宽度包括 content padding border,当在这个方法的内部传入true时,其宽度还包括margin.
16.jquery事件 事件对象 e.pageX相对于文档而言的宽度, e.client相对于浏览器而言的宽度 e.which表示键盘输入的那个按键 e.button那个鼠标俺就被按下 e.sereenY表示距离电脑窗口的高度 $('body').click(function(e){console.log(e.pageY) console.log(e.clientY)console.log(e.screenY) })
17. 防止默认事件触发e.prevenDefault e.stopPropagation() return false $('input').on('mousedown contentmune' , function(e){e.preventDefault();console.log(e.button) })
18.offset().left / offset().top相对与浏览器窗口定位,position().left/top,相对于有定位的父级进行定位