JQ

簡介

     jQuery是一款優秀的javaScript庫.jQuery已經集成了JavaScript、CSS、DOM和Ajax于一體的強大功能。它可以用最少的代碼, 完成更多復雜而困難的功能:
      jQuery的主旨:write less, do more.  寫的更少,  干的更多。以更少的代碼,實現更多的功能

John Resig 2006年8月發布jQuery (22歲)

JQ特點

1、輕量級   2、強大的選擇器  3、出色的dom封裝  4、可靠的事件處理  5、瀏覽器兼容性強、
6、鏈式操作方式 (相同的對象直接進行操作 通過.) 7、隱式迭代(for循環)

jQuery代碼風格

在jQuery程序中,不管是頁面元素的選擇、內置的功能函數,都是美元符號“$”來起 始的。而這個“$”就是jQuery當中最重要且獨有的對象:jQuery對象 

jQuery與javaScript加載模式對比

    js  window.onload必須等頁面全部加載(圖片,連接等)完,才能執行js代碼
    jq  $(document).ready()只需要等待網頁中的DOM結構 加載完畢,就能執行包裹的代碼  簡寫$(function () {});  
   為了解決沖突  var jq = $.noConflict();       jq(function () {  alert(1); });  
 便不會因為$被替換沖突

jQ與js之間的轉化

 var box_js =  document.getElementById('box');
 $(box_js).html();jQ方法
 box_js.innerHTML): js方法                                                                                                                              
 js—jQ   $('#box')[0].innerHTML 或者   $('#box').get(0).innerHTML = box_js.innerHTML
jQ--js      $(box_js)

操作css

  $('#box').css({
            width:100,
            height:200,
            background:'red'
        }).css('height',100).css('background','red')鏈式操作;

操作類名

 $('.box').addClass('red fs50');   添加類名(class=red,  class=fs50)
 $('.box').removeClass('red fs50');  移除class屬性
 $('.box').toggleClass('red fs50');   切換class屬性  前面兩個相互轉化

操作標簽內容

        $('#box').text('<h1>我是一個大標題</h1>');    原樣輸出 h1不會解析
        $('#box').html('<h1>我是一個大標題</h1>');  會解析內部的html標簽

基礎選擇器;

$('#box')  id選擇器
$('box').css()   class選擇器
$('p').css()   標簽選擇器
$('h1,p')  多個標簽選擇器(并集)

屬性選擇器

 $('a[href]')    獲取所有具有href的標簽
 $('a[href = "www.baidu.com"]'); 獲取href ='www.baidu.com'd的元素
 $('a[href != "www.baidu.com"]');獲取href =不是'www.baidu.com'd的元素
 $('a[href^="www"]');獲取屬性值以www開頭的對象
 $('a[href$="cn"]');獲取屬性值以cn結尾的對象
 $('a[href*="520"]');獲取屬性值包涵520的對象
 $('a[href*="www"][title*="是"]');獲取屬性值包涵www的對象并且title包含"是"的對象

篩選選擇器

 $('li:first');$('li:not(:eq(0))')==$('li:not(:first)')
 $('li:last');  $('li:not(:last)')
$('li:even') 所有基數
 $('li:odd') 所有偶數
 $('li:gt(4)');  $('li:lt(4)');  $('li:eq(4)')
$(':header')  選擇所有標題 <h>標簽

父子選擇器

$('li').parent(); 父親
$('.box').children();孩子
$('.box').find('span') 孩子找到指定的元素
$('.liItem').siblings();兄弟    所有()里面可以添加特定的屬性

動畫

$('div').hide() 隱藏
$('div').show()展現
$('div').toggle()  切換  注意點所有()里可以輸入2個參數 第一個時間(可以只有第一個),第二個函數(時間結束調用的方法)
 $('div').hide(2000,function () {
            //當動畫完成時自動調用;
            alert('隱藏完成');
        });

展示收起動畫

   $('div').sildeUp() 隱藏
  $('div').slidedown()展現
  $('div').slideToggle()  切換  注意點所有()里可以輸入2個參數 第一個時間(可以只有第一個),第二個函數(時間結束調用的方法)
 $('div').slideToggle(2000,function () {
            alert('1');
        });

slideUp()與show()區別

slideUp動畫從上面一條邊拉下來,()沒有參數也有一種漸變效果
show動畫從角慢慢張開;()沒有參數時立馬出現;沒有漸變效果 
動畫排隊:當執行多個動畫的時候,會產生排隊效果。會把多個動畫,添加到一個動畫隊列中。動畫隊列中,只要添加進去,就會等待完成。
stop()用來停止當前的動畫執行后面的動畫
 $('.first>li').hover(function () {
        //動畫排除
        //每一次動畫都會添加到一個隊列當中
        //同時執行多個動畫時,可能會造成動畫排列。
        //想要停止,使用stop
        $(this).children('ul').stop().slideToggle();
         //  var index = $(this).index();//獲取索引
    });

淡入淡出動畫

$('div').fadeIn()淡入
 $('div').fadeOut() 淡出
$('div').fadeToggle() 注意點所有()里可以輸入2個參數 第一個時間(可以只有第一個),第二個函數(時間結束調用的方法)
 $('div').fadeTo(1000,0.3);  **第一個參數時間;第二個是opacity
 $(function () {
    //彈出廣告
    $('.ad').slideDown().fadeOut().fadeIn().delay(3000).slideUp();
    //關閉廣告
    $('.close').click(function () {
        //開始動畫時, 要先停止動畫隊列。
        $(this).parent().stop().slideUp();
    });
    $('.ad').slideDown.hide().show().delay(2000).slideUp
});

自定義動畫animate

 $('div').animate({width:300 },1000,function () {  alert('finish')  });;
 $('div').animate({width:'+=300' },1000,function () {  alert('finish')  });;
 $('div').animate({width:'toggle' },1000,function () {  alert('finish')  });; 寬度有無切換
      第一個參數 目標值(對象);第二個參數;時間,第三個參數函數

each

 var obj = [
        {name:'gxq',age:'20'},
        {name:'zs',age:'18'},
        {name:'wc',age:'21'},
        ];
 $.each(obj,function (key,value) {
        console.log(value.name,value.age);
       console.log($(value).text()); ach迭代出來的value 它是一個原生js對象,沒有辦法直接使用jQuery;想要使用必須得要轉成jQuery對象
    }); each遍歷();第一個參數為對象(數組),后面function里面的參數第一個key;第二個為vaule;(數組的第一個索引;第二個值)

添加節點

       ul內部添加
      var tag = '<li>我是新的li</li>'
       $(tag).prependTo($('ul'));   父子關系( tag是ul的子元素) 
     $('ul').prepend(tag); 內部添加第一個li之前; 父子關系( ul是tag的父元素元素)
區別:作用無區別; 僅僅是位置放置不同
   $('ul').append(tag); 內部添加最后一個li之后
   $(tag).appendTo('ul'); 添加節點到某個固定的節點之前
  外部添加
 var tag='<li>我是添加</li>'
     $(tag).insertBefore('ul') =   $('ul').before(tag)  添加ul之前
     $(tag).insertAfter('ul'):=  $('ul').after(tag)  添加ul之后
  添加節點到某個固定的節點之后
  兩者無區別;僅僅是位置不同而已
     
  

刪除節點

  • $('li:last').remove(); 刪除節點;節點不在
  • $('li).empty(); 清空節點;內容清空 節點還在

復制節點

  • var newTag = $('h1').clone(true); //當為true,代表復制所有,包括它注冊的事件;//不傳參為false 只復制標簽。事件不會復制
  • $('.box').append(newTag);

替換節點

  • var tag = <div>我是一個div</div>;
  • $('h1').replaceWith($(tag));

事件對象; 事件冒泡

  • $('button').on('click',{name:'gxq',age:'23'},function (event) {
    event.stopPropagation(); //阻止時間冒泡
    console.log(event.type); //click
    console.log(event.target); // button標簽
    console.log(event.data.name); 、// gxq
    console.log(event); // 整個
    });

默認行為 ; 自動觸發

  • $('inpu[type=submit]').on('click',function (e) {
    e.preventDefault(); // //阻止事件的默認行為。
    return false // 也可以
    });
  • $(':submit').trigger('click'); //自動觸發但是有冒泡事件
  • $(':submit').triggerHandler('click'); // //自動觸發但是有冒泡事件

事件委托

  > $('button').click(function () {
          var tag = '<div class="box1">1111</div> ';
            var tag1 = '<div class="box2">1111</div> ';
           $('.box').append(tag);
           $('.box').append(tag1);
        });

 $('.box1').on('click',function (){
            alert('1');  //不會觸發;代碼解析到這 ;box1還沒生成
        });

  >  $('.box').on('click','.box1,.box2',function () {
         alert('點了1'); //成功
         })
    >$('.box').click('.box1,.box2',function(){
        alert('3') //  這個點擊box的任何位置都會跳出3
        })

trigger自動觸發事件

<form action="03-刪除結點.html">
    <input type="submit">
</form>

  /*觸發事件
        程序一執行就開始執行對應的事件
       1.使用trigger會解發事件的默認行為. 2.使用trigger觸發事件時, 不能阻止事件冒泡         
               $(':submit').on('click',function () {
                      alert('提交');
                  });
         $(':submit').trigger('click');  一進頁面就觸發了點擊,而且跳轉
      //  $(':submit').triggerHandler('click'); 觸發點擊,但是清除默認事件不跳轉

鏈式操作

$(this).children('.sec').slideToggle().end().siblings().children('.sec').slideUp()
end() 可以結束前一段鏈式操作,又回到原始$(thiis)這個狀態操作

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 入口函數 $(document).ready(function(){});$(function(){}); js入...
    J_L_L閱讀 423評論 0 1
  • 通過jQuery,您可以選取(查詢,query)HTML元素,并對它們執行“操作”(actions)。 jQuer...
    枇杷樹8824閱讀 669評論 0 3
  • 單例模式 適用場景:可能會在場景中使用到對象,但只有一個實例,加載時并不主動創建,需要時才創建 最常見的單例模式,...
    Obeing閱讀 2,092評論 1 10
  • // $("#show").hide(); $("#btn").get(0).onclick = function...
    世不由己言不由衷閱讀 302評論 0 0
  • 母親,勤儉節約,性格要強,從不屈服,所有自己能干的事不求別人,母親也是個善良的母親,記得以前家里有葡萄園,到了成熟...
    葉舞金秋閱讀 228評論 0 1