1. 程式人生 > >JQuery 總結(1) 選擇器的使用

JQuery 總結(1) 選擇器的使用

 一 注意:

    1.DOM物件:通過原生js獲取的DOm物件(DOm樹上的節點就是,比如<li></li>)

    2.jQuery物件:通過jQuery 選擇器獲取的

     jQuery物件智慧用jQuery中封裝的方法,不能使用DOm物件的方法 同理 DOm也是一樣

二 選擇器相互更換:

     1.DOM轉換成JQ物件  $(“DOM物件”)

     2.JQ物件轉換成DOM物件 $("div")[index]  或者 $("div").get(index)

三 基本選擇器

 1. #id > $("#id名"), 
 2. .class > $(".class名")   
 3. element標籤 > $("div") 
 4.群組選擇器 > $("div,p")
 5.* > $("*")

四 後代選擇器 子元素選擇器 緊鄰的同輩選擇器

  1.$("#id  li"), 這個是所有的後代

  2. $("#id > li"), 這個是隻查到兒子為止

  3. $("#id + p ") 緊挨著#id 後面的p元素

 

  4. $("#id ~ p ") 在#id 後面的同輩兄弟p元素

五.表單元素選擇器

<form>
<input type="text" />
<input type="checkbox"checked /> 複選框
<input type="radio" /> 單選框
<input type="image" />
<input type="file" />
<input type="submit" />
<input type="reset" />
<input type="password" />
<input type="button" /> <select><option/></select> <textarea></textarea> <button></button> </form> </body>
<script>
$("input:text").css({ "background":"red", width:200, height:100 })


$("input:enabled") 所有可用元素 disabled 不可用
$("input:checked") 所有選中的複選框

六.過濾元素選擇器

 

    過濾和其他的選擇器搭配使用  這個基本通過下標來過濾

   1.$("li:first")  所有的li中的第一個,$("li:last")  最後一個
   2.$("li:eq(4)") 選擇第4個 下標0開始
      $("li:gt(4)") 下標大於4,great that 。
      $("li:lt(4)")  下標小於4,little that。

      $("li:nth-child(-n+3)") 和css類似 2n  2n+1,-n+3 一樣使用
      $("li").slice(1,2) 第1個到第二個 第二個不包含,如果不寫後面的數字 一直到最後
      $('.gg').prevUntil('.ab').css('backgroundColor', 'red');  在ab到gg,  他們之間全部同輩元素選中

  3.  $("li:odd") 下標基數,$("li:even") 下標偶數
  4. $("li:not(.a5)") 去除a5剩下的元素
  5.$(":header") 獲得所有的標題元素集合(H1-H6)
  6.:animated 匹配正在執行動畫的元素
       li中 沒動畫的元素給加個動畫  每100毫秒 left值增加200
       $("li:not(:animated)").animate({  left:"+=200" },100  )

 7. $("div").css("background", "orange").filter(".box").css("border-color", "red"); 全部的div設定橙色,其中 有class.box的設定 紅色 好鏈式呼叫
    $("div").filter(".box") 等效於     $("div.box")
 8.if ($("p").parent().is("div")) {     alert("p 的父元素是 div");     }用來判斷p的父級是不是div 是的話返回 true

 

 

七:內容過濾選擇器 (根據內容來篩選 子孫都算)

  1.$("li:contains('hospital')").css("background","red")  在li中文字含有hospital的 變紅色

       $("li:not(li:contains('hospital'))").css("background","red")  在li中文字沒有hospital的變紅
      $("span:contains('九江')").text("南昌")   span中有九江的換成南昌

  2. $("li:has(span)")   中查詢有span元素的li
  3. $("li:empty()")   篩選所有內容為空的li ,   $("li:parent()")   篩選所有內容非空的li 

八 屬性選擇器 

 1. $("li[title]")   篩選出含有title 屬性的元素

 2.  $("li[title='aac1']")  選擇title等於aac1的元素,
      $("li[title!='aac1']") 選擇title不等於aac1的元素 沒title的也算

     $("li[title^='c1']")   以什麼開頭,  $("li[title$='c1']")  以什麼結尾,
     $("li[title*='c']")    選擇title值裡面含有 c 的元素
     $("li[id][title='aac']") 組合 屬性中有id 而且 title=aac的元素

九 查詢選擇器 

     1.獲取子元素
        $("li").children("span")  獲取li的兒子元素含有span

        $("li").find("span")  獲取li的子孫元素含有span,,find() 必需要有引數

    2. 獲取父級
         $("span").parent() 獲取 span元素的直接上級

         $("span").parents() 獲取 span元素的所有上級

    3. 獲取同級元素

           1.$(".bb").prev() 前一個      prevAll()前面所有的同級
               $(".bb").next() 後一個     nextAll()後面所有的同級
            2.$(".bb").siblings() 所有的同級
      

 

 


   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

一   元素選擇:

1. $('*')   選擇所有元素  預設選擇document下的所有元素  或者選擇某個div下的元素

2. $('#box')    $('.box')  $('p')  $("div .p")  這些都是類似於css的選擇方式  返回的是jquery物件  

3.$('p:first')  $('p:last') $('p:even')  $('p:odd') ,第一個最後一個  奇數 偶數。

4.$("p:eq(3)") 列表中的第三個(0開始算),$("p:lt(1)")   $("p:gt(1)")  從第幾個開始 往後,和往前。

進階:

$('#a').prevUntil('.b').css('backgroundColor', 'red'); 從a到b 之間的同輩元素都紅

 

 

.siblings() 選取所有同輩元素
.prev()  .next() 下一個兄弟,nextAll()後面同級所有,
.parent() 父級,children("a")兒子 有a的,
.find("p") 查詢當前元素 所有的後代 只要符合條件,找出正在處理的元素的後代元素的好方法。
總結:用 $(this) 可以判斷 事件發生是誰呼叫,就表示當前熱點是給誰的,比如當前選中的標籤 我想它其他的兄弟元素 改變樣式,就要依託 當前元素的關係 ,然後找到其他的元素 改變 。

找出正在處理的元素的 兄弟關係 是最合適的



二   DOM 增刪改查

  A.增加

 1.  var div=$("<div/>");  var father=$("body");  father.append(div);   在father裡面插入div 注意插入 的是jquery物件 

                        father..prepend(div); 插在father的前面

 2. var div=$("<div/>");   div.appendTo($("#wrap"));  把兒子塞到父親裡面。

                       div.prependTo($("#wrap")); 查到父親的前面

 

 3.   $(".p2").after($("<span/>"))  .p2的後面放span 這麼理解

       $("<span/>").insertAfter($(".p2"))   把span放到 p2的後面  [insert 是插入的動作]

 4.   before  和insertAfter 也是同上

B.刪除

1 .$(".p2").remove(); 誰呼叫.remove() 就刪誰

$a=$(".p2").remove(); 刪完之後 用$a來接收,$a.insertAfter(".p3"); 把接收的東西插入到p3

2. $(".p4").empty(); 這個是清空p4下所有的節點 文字,兒子孫子什麼的都清空 只留下p4


 C.修改 檢視  [ 注意這裡既可以賦值 也可以  獲取]

    •text() - 取值和賦值都是一組,

    •html() - 取值和賦值(帶html標記)[碰到物件的話 取值第一個]
    •val() - 設定或返回表單欄位的值

<script>
$(document).ready(function(){
  $("#btn1").click(function(){
    $("#test1").text("Hello world!");
  });
  $("#btn2").click(function(){
    $("#test2").html("<a href="+"www.baidu.com"+">Hello world!</a>");  (碰到分號結尾或者開始的用 +號給分開)
  });
  $("#btn3").click(function(){
    $("#test3").val("Dolly Duck");
  });
});
</script>

 

三 屬性新增
   1.  新增css

 

$(".bb").css({
color:"red",
width:"100px",
height:"100px",
background:"orange"
})

獲取css

console.log($(".p2").css("width"))    在這裡獲取到css樣式內容  要提取數字 parseInt


   2.新增屬性和檢視屬性

固有屬性:id class src href  title type alt value  .attr支援固有和自定義  ,.prop 只支援固有(判斷checkbox動態返回true和false)
  $('img').attr('src','1.jpg') 這種就是給img新增屬性,[這個最好給固有屬性新增]

($("div").attr('class')); 獲取這個物件的class屬性

 $("#ccc").removeAttr("class") 刪除樣式
延伸 點選哪個按鈕 下面img分別顯示不同的圖片

  console.log($(this).css(["width","background"])) 同時檢視兩個屬性。200px

console.log($(this).width()) 200  Number

width()content,
innerWidth()content+padding

outerWidth() content+padding+border,
outerWidth(true) content+padding+border+margin,

 

 

 

console.log($(this).css("left"))   350px
console.log($(this).offset().left)   358   [相對視窗]
console.log($(this).position().left)  350  【相對有定位的父級】

arr.join(",")拼接字串

 

<body>
   <p class=p2>p2 內容</p>
   <p class=p3>p3 內容</p>
   <p class=p4>p4 內容</p>
   <p class=p5>p5 內容</p>
   <img src="https://gss0.bdstatic.com/5bVWsj_p_tVS5dKfpU_Y_D3/res/r/image/2018-11-06/6a9857e338f779063000ee316ac51c5c.jpg" alt="">
<script>
$(".p2").click(function () {
 $("img").attr(
  "src","https://gss0.bdstatic.com/5bVWsj_p_tVS5dKfpU_Y_D3/res/r/image/2018-11-06/4aa4b8ce4b9c40bceddd13417b46af63.jpg"
)
})
$(".p3").click(function () {
 $("img").attr(
  "src","https://gss0.bdstatic.com/5bVWsj_p_tVS5dKfpU_Y_D3/res/r/image/2018-11-06/12f1ad4efc0a5beae63a8f998dcadd5f.gif"
)
})
 </script>
</body> 

可以設定多個值

$("img").attr({
src: "test.jpg",
alt: "Test Image"
});


在原生js中 document.getElementsByTagName("INPUT")[0] . setAttribute("type","button"); 




五  獲取螢幕尺寸 偏移相關
$.offset().left  是指當前元素距離文件左邊多少距離
 
var left=($(".p2")r.offset().left;

var top1=($(".p2").offset().top;

       注意 $.position().left 這個才是獲取 css中left的值

 

六 載入完DOM 再執行函式:

    winodw.onload=function(){} 所有包含圖片載入完,然後再執行 效率低 而且只能使用一次。

   $(document).ready( fn)   簡寫 $(fn) 可以使用多次。