jQueryInAction Reading Note 3.

來源:互聯網
上載者:User

標籤:style   blog   java   color   使用   strong   io   for   

屬性和特性操作元素屬性

jQuery沒有用於擷取或者修改元素屬性的命令。需要利用javascript,首先需要做的就是獲得元素的引用。

each(function)

  對封裝集中的各個元素,進行function操作,function有預設的參數為當前元素的位置,function具有當前對象this的引用。

$("img").each(function(n){    this.alt = "this is " + n+1 + "th img, id is " + this.id;});

 

擷取元素特性

attr(name)

  返回當前封裝集中第一個元素的name屬性的值,如果沒有設定該屬性傳回值為undefined。其中name不區分大小寫

$(‘div‘).attr("name")

 

this.id vs. $(‘#id‘).attr(‘id‘)

this.id 傳回值為DOM中的值,如果沒有設定id,那麼id為空白"";

$(‘#id‘).attr(‘id‘),它的傳回值為html中指定的id的值,如果沒有指定的話,傳回值為undefined。

 

屬性和特性的區別

屬性是與生俱來的,即使使用者沒有設定值他也是有預設值的,能夠通過javascript直接改變或者擷取;

特性是使用者設定的,標準的特效能夠通過javascript擷取,非標準的只能通過attr(name)來擷取。

 

設定元素特性

attr(name, value)

  這個方法的作用是把value的值設定

  name跟上面一樣;

  value可以是一個字串,這很簡單

  value可以是一個函數,這能夠理解,就是把傳回值作為值

 

attr(attributes)

  attributes是一個對象,而這個對象是一個屬性<->值所組成的對象,如{id:"some", value:"0"}。

 

以上兩個方法會把封裝集中所有的元素的屬性都進行修改。

IE中input元素的name屬性是不能夠進行修改的,如果想要達到相同的效果的話,需要移除原來的input,再追加一個新的input。

 

刪除特性

removeAttr(name)

  移除封裝集元素中的name特性。特性是能夠被刪除的,但是屬性還是存在的,只不過值發生變化了。

 

元素樣式修改

元素樣式,屬性為className,特性為class。

對它的修改或者操作不使用className屬性或者attr(name)命令,jQuery提供了更加優雅的方式。

 

追加樣式

addClass(names)

  給所有的封裝集元素追加names樣式類。

  names可以是一個classs樣式,也可以是以空格分隔的多個class樣式。

 

刪除樣式

removeClass(names)

  把指定的樣式從封裝集元素的樣式中移除。

  names可以是一個classs樣式,也可以是以空格分隔的多個class樣式。

 

樣式更迭

toggleClass(name)

  對於封裝集元素,如果有name指定的樣式類,那麼刪除這個樣式類,如果沒有這個樣式類的話,追加這個樣式類。

        function swap() {            $(‘tr‘).toggleClass("bg-blue");        }

 

 

直接操作css

css(name, value)

css(properties)

  這兩個跟attr很像,相當直接了。

css(name)

  返回封裝集中第一個元素的css中name屬性的值。

 

width(value) / width

height(value) / height

用來設定和擷取元素的高度或高度,單位為px

 

hasClass(name)

name是一個樣式類的名稱,不帶"."。

 is(selector) vs. hasClass(name)

他倆在樣式判斷這方面可以替換,只不過is的參數是一個jQuery選取器,而hasClass的參數是一個樣式類;

selector的基本樣式為:.className

name的基本樣式為className

 

操作HTML

html()  // 擷取封裝集第一個元素的html

html(text)  // 設定封裝集元素的html

 

text()  // 擷取封裝集裡元素的所有文本(連不串連起來,不知道。。。)

text(content)  // 設定封裝集元素的內容,會把<翻譯成&lt;。。。

 

append(content)

  content可以是html片段或者是元素(需要用$("")選擇出來,,,)

  會把content追加到封裝集元素內,所有的既有元素之後。

  $(‘table‘).append("<h1>some</h1>");  // 產生的h1會存在於table裡面,這裡需要注意

 

appendTo(target)

  target是一個jQuery選取器,或DOM元素

  該方法會把封裝集裡的所有元素追加到target獲得的所有的元素內,既有元素之後。

 

$("source selector").appendTo("target selector")

如果target有一個的話,那麼source會被移動;

如果target有多個的話,那麼source會被複製。

 

與append和appendTo相似的有

prepend和prependTo

  在目標元素內,所有元素之前插入;

before和insertBefore

  在目標元素之外,前面插入;

after和insertAfter

  在目標元素值外,後面插入。

A.append(B), A.prepend(B), A.before(B), A.after(B) : 在A中處理B,A是目標,B是處理對象;

A.appendTo(B), A.prependTo(B), A.innertBefore(B), A.innertAfter(B): 把A處理到B中,A是處理對象,B是目標。

包裹元素

實在不知道這個東西的用途。。。

  ...可以實現全文檢索搜尋,將搜尋結果用某種特殊的樣式表現出來。。。

wrap(wrapper)

  wrapper是封裝器,用來封裝封裝集元素的

  封裝集中的每一個元素都會被封裝器封裝

wrapAll(wrapper)

  封裝集中的每一個元素都會被封裝在一個封裝器中

wrapInner(wrapper)

  把封裝集中的每一個元素的內容用封裝器封裝起來

<ul>  <li title=‘蘋果‘>蘋果</li>  <li title=‘橘子‘>橘子</li>  <li title=‘菠蘿‘>菠蘿</li></ul>$(‘li‘)wrap("<div></div>")-----------------------------------------<ul>  <div><li title="蘋果">蘋果</li></div>  <div><li title="橘子">橘子</li></div>  <div><li title="菠蘿">菠蘿</li></div></ul>$(‘li‘)wrapAll("<div></div>")-----------------------------------------<ul>  <div>    <li title="蘋果">蘋果</li>    <li title="橘子">橘子</li>    <li title="菠蘿">菠蘿</li>  </div></ul>$(‘li‘)wrapInner("<div></div>")-----------------------------------------<ul>    <li title="蘋果"><div>蘋果</div></li>    <li title="橘子"><div>橘子</div></li>    <li title="菠蘿"><div>菠蘿</div></li></ul>

 

刪除元素

remove()

  將DOM中的封裝集元素刪除

  這個方法仍然對封裝集元素具有引用,這些元素可以進行其它操作,如insertAfter等。

  $("div.elementToReplace").after("<p>New Element!</p>").remove();// 建立的p,放到div.elementToReplace後,然後把div.elementToReplace刪除;

  $("div.elementToReplace").remove().after("<p>New Element!</p>");// 先把div.elementToReplace刪除了,又把它放到了建立的p之後。。。

 

empty()

  將封裝集元素的內部節點都刪除

 

複製元素

clone(copyHandlers)

  將封裝集中的元素進行複製,進而進行其它的操作。

  copyHandlers是一個boolean型的值,是否將節點上的事件一起複製,一起複製的話,true,反之,false。

 

表單元素

val()

  擷取封裝集中第一個元素的value的值,注意,如果第一個元素不存在value屬性的話,會拋出javascript錯誤。

  對radio不友好,因為它總會獲得第一個radio的value值,但是可以這麼擷取:$(‘input[type=radio, name=some]:checked‘).val();

  如果radis一個也沒有選擇的話,上述代碼傳回值為undefined。

  

val(value)

  把value的值設定給封裝集中的每一個元素,需要注意!!!

  設定的貌似只限於輸入型的

 

val(values)

  values是一個數組,數組中提供多個值[a, b, c]

  這個方法會作用於各種類型的input,select等。但是結果挺亂的

輸入型的input:會把值a, b, c輸入到文字框內

select的話,會把value相匹配的選項選中

radio的話,沒有找到什麼規律,不敢亂講

checkbox的話,會把value相匹配的選項選中

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.