jQuery

jQuery


python中稱爲模塊,其餘語言稱爲類庫,DOM/BOM\JavaScript的集合

對於jQuery,不少大公司在使用時,不徹底用到,須要封裝一部分想要的功能以節省流量
或者用dom,由於效果出來前要加載好jQuery文件,這涉及到流量。

概要:
查找元素(DOM不能查找自定義屬性,全部標籤)
選擇器
篩選
操做元素
css

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

  

1、選擇器html

		$('')                    #獲取的
		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
python

			$('.header').click(function () {            #爲每個對象綁定事件
				$(this).next().removeClass('hide');
				$(this).parent().siblings().find('.content').addClass('hide');
			})

  

兩句能縮爲一句,鏈式編程,即removeClass後.xxxx,這是由於removeClass返回一個jQuery對象


2、篩選器
形式:選擇器.xxx() 括號內能夠加選擇器,能夠嵌套篩選
jquery

		$(this).next()      #下一個 .nextAll() .nextUntil('#i1')
		$(this).prev()      #上一個 .prevAll() .prevUntil('#i1')
		$(this).parent()    #父標籤 .parents() .parentsUntil()
		$(this).children()  #全部子標籤
		$(this).siblings()  #全部兄弟標籤,不包含本身
	
		$(this).find()  	#查找
		
		.first() .last() .hasClass()

  

3、操做編程

文本操做bootstrap

			$().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('')  #沒有則添加,有則移除

  

屬性操做:
app

			$().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在內

  

4、事件
事件綁定:
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實現效果同樣,只是參數位置不一樣,版本一、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(){})  	#頁面全部內容加載完才執行

  

5、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)
			一引入後自動執行,即自動編譯好以被引用。

  

6、組件 =============全能========================== 後臺管理的功能須要組合才能造成一個好的前端,能夠網上搜組合好的模板,本身開發修改細節。 ①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的標籤代碼

相關文章
相關標籤/搜索