jQuery

jQuery


python中称为模块,其他语言称为类库,DOM/BOM\JavaScript的集合

对于jQuery,很多大公司在使用时,不完全用到,需要封装一部分想要的功能以节省流量
或者用dom,因为效果出来前要加载好jQuery文件,这涉及到流量。

概要:
查找元素(DOM不能查找自定义属性,所有标签)
选择器
筛选
操作元素

	引入:<script src=''></script>
		  <<script>
			jQuery.     #引用封装的方法
			$.          #等于jQuery
		  </script>

  

一、选择器

		$('')                    #获取的
		document.getElementById
		转换:
			$('')[0] = DOM对象   
			$(DOM对象) = $('')  

  

		1. id:
			$('#')
		2. class:
			$('.')
		3. 标签:
			$('')
		4. 所有
			*
		5.组合
			$('a,.c1,#i2')
		6.层级
			$('a .c1 #i2')  #查找所有子孙,不单限于直系
			$('a>.c1')      #只找儿子
		7.基本筛选
			:first
			:last
			:eq(index)  #等于,取第i个值
		8.属性
			$('[alex]')
			$('[alex="xxx"]')
		9.表单
			<input type="text" />
			$(':text')   还有submit
			等同于$('input[type="text"]')
			还有$(':checkbox')等


示例:全选反选

			function checkAll() {
				$('#tb :checkbox').prop('checked',true);     #多个结果,jQuery自动循环进行prop
			}
			function cancelAll() {
				$('#tb :checkbox').prop('checked',false);    #prop取checkbox的checked属性
			}
			function reverseAll() {
				$('#tb :checkbox').each(function () {        #each循环每一个,function传参时传下标
					if(this.checked){
						this.checked = false                 #this代指DOM对象,故此为DOM方法
					}else{
						this.checked = true
					}
				})
			}
				方法二:jQuery获取
				if($(this).prop('checked')){
                    $(this).prop('checked',false);
                }else {
                    $(this).prop('checked',true);
                }
				方法三:三元运算  条件?真值:假值
					var v = $(this).prop('checked')?false:true;
					$(this).prop('checked',v)

  

示例:左侧菜单
功能:找到标签,添加移除class

			$('.header').click(function () {            #为每一个对象绑定事件
				$(this).next().removeClass('hide');
				$(this).parent().siblings().find('.content').addClass('hide');
			})

  

两句能缩为一句,链式编程,即removeClass后.xxxx,这是因为removeClass返回一个jQuery对象


二、筛选器
形式:选择器.xxx() 括号内可以加选择器,可以嵌套筛选

		$(this).next()      #下一个 .nextAll() .nextUntil('#i1')
		$(this).prev()      #上一个 .prevAll() .prevUntil('#i1')
		$(this).parent()    #父标签 .parents() .parentsUntil()
		$(this).children()  #所有子标签
		$(this).siblings()  #所有兄弟标签,不包含自己
	
		$(this).find()  	#查找
		
		.first() .last() .hasClass()

  

三、操作

文本操作

			$().text()     	  #获取文本内容
			$().text('')   	  #赋值
			
			$().html()   	  #获取标签代码
			$().html(‘xxx’)   #赋值标签代码
			
			$().val()         #对比DOM的value,获取表单文本,input、select、textarea
			$().val(‘’)
			
			示例:模态对话框 添加编辑	
				
			$('.edit').click(function () {
				$('.model,.shadow').removeClass('hide'); 
				var tds = $(this).parent().prevAll();      #找到所有的父标签的前面标签
				var port = $(tds[0]).text();               #注意tds为jQuery对象,[0]变为DOM,要再转
				var host = $(tds[1]).text();
				$('.model input[name="hostname"]').val(host);  #找到输入框并赋值
				$('.model input[name="port"]').val(port);
			})

  

样式操作:

			.addClass('')
			.removeClass('')
			.toggleClass('')  #没有则添加,有则移除

  

属性操作:

			$().attr('')     #获取指定属性值
			$().attr('','')  #设置自定义属性值
			$().removeAttr('')
			
			专门用于checkbox,radio这种选中的操作,用attr一开始可以选中,取消后再也选不中
			$().prop('checked')      #选中则返回true,否则为false
			$().prop('checked',true)

  

			示例:编辑模态框获取值
				var tds = $(this).parent().prevAll();
				tds.each(function () {                         		#循环
					var n = $(this).attr('target');                 #获取属性值
					var text = $(this).text();
					$('.model input[name="'+ n + '"]').val(text);   #需要注意的是n为变量,选择器中要加
																	 字符串,进行并接即可
				})
				
			示例:Tab菜单切换
				$('.menu-item').click(function () {
					var n = $(this).attr('a');
					$(this).addClass('active').siblings().removeClass('active');     #添加、移除class
					$('.content [b="'+ n +'"]').removeClass('hide').siblings().addClass('hide');
				})
			
			示例:Tab菜单切换改进-通过index获取索引
			
				$(this).addClass('active').siblings().removeClass('active');
				var v = $(this).index();
				$('.content').children().eq(v).removeClass('hide').siblings().addClass('hide');

  

标签处理:

			添加:
				$().append()	 #括号内可以是字符串并接或者标签元素document.createElement
				$().prepend()	 #标签内
				$().before()     #同级标签
				$().after()
		
			删除:
				$().eq(index).remove()  删除第几个标签
				$().eq(index).empty()   清空文本内容
				
			复制:
				$().clone()        复制标签
				
			示例:
				$('#b1').click(function () {
					var v = $('#t1').val();
					var temp = "<li>" + v + "</li>";       #字符串并接,还有document.createElement方法
																							创建标签
					$('#u1').append(temp);
				})
				$('#b2').click(function () {
					var index = $('#t1').val();
					$('#u1 li').eq(index).remove();
				})
				$('#b3').click(function () {
					var index = $('#t1').val();
					var v = $('#u1 li').eq(index).clone();
					$('#u1').append(v);
				})	

  

CSS处理:

			$().css('color','red')   个别样式设置
			
			点赞例子:
				知识点:- $().append()
						- $().remove()
						- setInterval clearInterval
						- opacity 1 -> 0
						- position top right absolute
				代码:		
					var tag=document.createElement('span');      #这种方法创建标签能用于jQuery设置样式
					$(tag).text('+1');
					$(tag).css('color','green');
					$(tag).css('fontSize',fontSize + "px");      #以px为单位
					$(tag).css('position','absolute');
					$(tag).css('top',top + "px");
					$(tag).css('right',right + "px");
					$(tag).css('opacity',opacity);
					$(self).append(tag);                         #添加标签
				
					var obj = setInterval(function () {
					
						fontSize = fontSize + 10;                #变化
						top = top - 10;
						right = right - 10;
						opacity = opacity -0.1;
						
						$(tag).css('fontSize',fontSize + "px");   #重新赋值
						$(tag).css('top',top + "px");
						$(tag).css('right',right + "px");
						$(tag).css('opacity',opacity);

						if(opacity<0){
							clearInterval(obj);         #关闭定时器
							$(tag).remove();            #清除标签
						}
					},100);

  

位置

				$().scrollTop()     #获取,括号内加选择器即可,window表示的是窗口$(window).
				$().scrollTop(0)	#设置
				
				$().scrollLeft()
				
				$().offset()        #指定标签在html中的坐标
				$().offset().left   #用于获取左上角坐标
				$().offset().top
	
				$().position()      #标签相对于父标签(relative)的坐标,中间隔着其他标签无碍 

  

尺寸:

				$().height()         #设定CSS中 'height' 的值
				$().innerHeight()    #内部区域高度(包括补白padding、不包括边框border)
				$().outerHeight()    #外部高度(默认包括补白padding和边框border),默认false
				$().outerHeight(true)#设置为 true 时,计算边距margin在内

  

四、事件
事件绑定:
DOM:三种绑定方式 ——标签内onclick

								document.getElementById().onclick
								document.getElementById().addEventListener

 

jQuery:
与DOM对比,开头没有on

$().click()

				$().click()	
				
				$().bind('click',function(){})				通过该方式绑定的只能该方式解绑		
				$().unbind('click',function(){})				
								
				$().delegate('a','click',function(){})		委托,一开始没绑定,点击的时候才绑定a且执行			
				$().undelegate('a','click',function(){})	其他三种都是一开始绑定好了,添加标签a后没绑定					
								
				$().on('click',function(){})				上面三种方式原理都是调用的on
				$().off('click',function(){})				这个也能委托,$('上级标签').on('click','a',function(){})	
															点击上级标签时,给所有的a标签绑定事件
				事件委托delegate和on实现效果一样,只是参数位置不同,版本1、2中有delegate

  

阻止事件发生:
默认a标签点击跳转,绑定onclick后,先执行onclick
分两种:默认先执行 checkbox
绑定先执行 a submit

DOM绑定时:

				<a onclick="return clickOn();" href="http://www.baidu.com">zou ni</a> #要return
				<script>
					function clickOn() {
						alert(123);
						return false;       #true时跳转
					}
				</script>	

  

jQuery绑定时:
函数内return false即可

示例:表单验证

				$(':submit').click(function () {
					$('.error').remove();         #提交前先清空上次验证的错误信息
					var flag = true;              #只要为空,flag为false不跳转
					$('#f1').find('input[type="text"],input[type="password"]').each(function () {
						var v = $(this).val();
						if (v.length <= 0){
							var tag = document.createElement('span');
							tag.innerHTML = '必填';
							tag.className = 'error';
							$(this).after(tag);
							flag = false;
							//return false;      #这里的return是跳出循环,不能返回给函数,相当于break
						}
					});
					return flag;                 #返回flag,决定能不能跳转
				});

  

事件自动执行

			$(function(){ })    		#页面框架加载完自动执行,可以避免加载图片慢导致事件绑定慢的问题
			
			$().click(function(){})  	#页面所有内容加载完才执行

  

五、jQuery扩展

			方式一:
			$.extend({
				'wangsen':function () {return 'gg';}
			})
			$.wangsen();
			
			方式二:
			$.fn.extend({
            'hangyang':function () {return 'db';}
			});
			$('#i1').hangyang();
		
			可以写好js文件,然后引入即可使用。也可在网上找。自定义的扩展可能会重复名字,没办法避免
		
			全局变量也可能重复,写一个自执行函数即可解决。
			(function(arg){
				var status = 1;             #包裹在函数内,不再是全局变量,只能自己用
				arg.extend({'':function(){}})
			})(jQuery)
			一引入后自动执行,即自动编译好以被引用。

  

六、组件
=============全能==========================
后台管理的功能需要组合才能形成一个好的前端,可以网上搜组合好的模板,自己开发修改细节。

①BootStrap
-CSS样式
-JS
学习BootStrap规则
1.响应式
指针对屏幕大小切换,html样式随之变化
<style>
@meida(min-width:700px){
.c2{
background-color:red;
}
}
</style>
2.图标、字体
原理:内部是表格,表格的不同位置画好图标,位置由unicode代码表示,使用时
复制图标对应的代码<span class="glyphicon-class">glyphicon glyphicon-euro</span>
@font-face
3.基本使用
对于css文件,link引入
<link href=".../css/bootstrap.min.css" rel="stylesheet">
对于js文件,script的src引入
<script src="...jquery/1.11.1/jquery.min.js"></script>
复制插件代码

如果要修改插件效果,前后css样式混淆,在样式内{}加上!important



============偏后台管理========================
②jQueryUI 推荐指数*,功能不美,需修改很多
-CSS
-JS
学习jQueryUI规则

③EasyUI(代码前后端不完全一致,功能齐全)
-CSS
-JS
学习EasyUI规则:下载好JS文件,在文件中引入src,然后将demo中的html相应代码复制即可

========Ajax操作========

轮播插件:网上如bxslider
下载后引入css、js,复制script语句和引用script的标签代码

posted @ 2018-07-28 15:38  心平万物顺  阅读(99)  评论(0编辑  收藏  举报