日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jQuery中DOM操作方法 之 html,text,val

發布時間:2023/12/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jQuery中DOM操作方法 之 html,text,val 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jQuery內核 DOM操作方法 之 html,text,val

回顧下幾組DOM插入有關的方法

innerHTML 設置或獲取位于對象起始和結束標簽內的 HTML?
outerHTML 設置或獲取對象及其內容的 HTML 形式

看圖對照區別

?


innerText 設置或獲取位于對象起始和結束標簽內的文本?
outerText 設置(包括標簽)或獲取(不包括標簽)對象的文本


innerText 和outerText 在讀取得時候是一樣的,只是在設置的時候outerText 會連帶標簽一起替換成目標文本?
firefox不支持innerText ,但是可以用textContent作為替代方案。

?


nodeValue?
對于文本節點,nodeValue 屬性包含文本。

對于屬性節點,nodeValue 屬性包含屬性值。

nodeValue 屬性對于文檔節點和元素節點是不可用的。

?


jQuery封裝的方法html,text,val

  • .html()用為讀取和修改元素的HTML標簽
  • .text()用來讀取或修改元素的純文本內容
  • .val()用來讀取或修改表單元素的value值。

  • .html()

    獲取集合中第一個匹配元素的HTML內容 或 設置每一個匹配元素的html內容

    取值

    獲取集合中第一個匹配元素的HTML內容

    在一個 HTML 文檔中, 我們可以使用?.html()?方法來獲取任意一個元素的內容。 如果選擇器匹配多個元素,那么只有第一個匹配元素的 HTML 內容會被獲取

    源碼部分可見jQuery.access在屬性節點操作的時候就詳解過了,就是合并分解多個參數,細分到每一個流程調用中,通過回調接收分解后的參數

    可見針對nodeType === 1的節點是通過瀏覽器接口innerHTML返回需要取的值

    有些瀏覽器返回的結果可能不是原始文檔的 HTML 源代碼。例如,如果屬性值只包含字母數字字符,Internet Explorer有時丟棄包裹屬性值的引號。

    html: function( value ) {return jQuery.access( this, function( value ) {var elem = this[ 0 ] || {},i = 0,l = this.length;if ( value === undefined && elem.nodeType === 1 ) {return elem.innerHTML;}}, null, value, arguments.length );

    設值

    .html()?方法對 XML 文檔無效.

    我們可以使用?.html()?來設置元素的內容,這些元素中的任何內容會完全被新的內容取代。

    此外,用新的內容替換這些元素前,jQuery從子元素刪除其他結構,如數據和事件處理程序,防止內存溢出

    if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {value = value.replace( rxhtmlTag, "<$1></$2>" );try {for ( ; i < l; i++ ) {elem = this[ i ] || {};// Remove element nodes and prevent memory leaksif ( elem.nodeType === 1 ) {jQuery.cleanData( getAll( elem, false ) );elem.innerHTML = value;}}elem = 0;// If using innerHTML throws an exception, use the fallback method} catch( e ) {} }

    對插入的值做一下過濾處理

    必須是字符串,而且不能暴行script|style|link,并且不是tr,表格等元素

    最后通過innerHTML覆蓋節點,防止內存溢出需要jQuery.cleanData清理節點上的事件與數據

    總結

    elem.innerHTML?也就是從對象的起始位置到終止位置的全部內容,包括Html標簽。

    ?


    .text()

    得到匹配元素集合中每個元素的文本內容結合,包括他們的后代,或設置匹配元素集合中每個元素的文本內容為指定的文本內容。

    .text()?在XML 和 HTML 文檔中都能使用。.text()?方法返回一個字符串,包含所有匹配元素的合并文本。? (由于在不同的瀏覽器中的HTML解析器的變化,返回的文本中換行和其他空白可能會有所不同。)

    text: function( value ) {return jQuery.access( this, function( value ) {return value === undefined ?jQuery.text( this ) :this.empty().append( ( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value ) );}, null, value, arguments.length ); },

    取值

    ?jQuery.text(?this?)?實際調用Sizzle.getText

    if ( typeof elem.textContent === "string" ) {return elem.textContent;} else {// Traverse its childrenfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {ret += getText( elem );}}

    但是實際上jQuery沒有用innerText獲取文本的值,

    http://bugs.jquery.com/ticket/11153,大概就是在IE8中新節點插入會保留所有回車

    所以jQuery采用了textContent獲取文本值,textContent本身是dom3規范的,可以兼容火狐下的innerText問題

    設值

    考慮下,如果文本的值不僅僅是字符串,可能是帶有標簽的

    '<p>This is a test.</p>'

    這種情況下,當然就不能直接套用 elem.textContent = '<p>This is a test.</p>'

    我們必須意識到這種方法提供了必要的字符串從提供的正確的HTML中脫離出來。

    jQuery這樣做, 他調用DOM 方法.createTextNode(), 一種替代的特殊字符與HTML對應(比如<?替換為?&lt;?)方法

    看代碼

    this.empty().append( ( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value ) );

    通過empty,先清理該節點上的事件與內容

    // Prevent memory leaksjQuery.cleanData( getAll( elem, false ) );// Remove any remaining nodeselem.textContent = "";

    通過createTextNode處理,調用append

    總結

    .text()?在XML 和 HTML 文檔中都能使用。.text()?方法返回一個字符串,包含所有匹配元素的合并文本。? (由于在不同的瀏覽器中的HTML解析器的變化,返回的文本中換行和其他空白可能會有所不同。

    .text()?方法不能使用在 input 元素或scripts元素上。?input?或?textarea?需要使用?.val()?方法獲取或設置文本值。得到scripts元素的值,使用.html()方法

    ?


    .val()

    獲取匹配的元素集合中第一個元素的當前值或設置匹配的元素集合中每個元素的值。

    .val()方法主要用于獲取表單元素的值,比如?input,?select?和?textarea

    對于選擇框和復選框,您也可以使用:selected?和?:checked選擇器來獲取值,

    取值

    hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {return ret;}ret = elem.value;return typeof ret === "string" ?// handle most common string casesret.replace(rreturn, "") :// handle cases where value is null/undef or numberret == null ? "" : ret;

    select為例

    <select multiple="multiple">?元素,?.val()方法返回一個包含每個選擇項的數組,如果沒有選擇性被選中,它返回null

    html代碼,multiple="multiple" 多選項,如果只是單選,只用用ele.value即可了

    <select size="10" multiple="multiple" id="multipleselect" name="multipleselect"><option>XHTML</option><option>CSS</option><option>JAVASCRIPT</option><option>XML</option><option>PHP</option><option>C#</option><option>JAVA</option><option>C++</option><option>PERL</option> </select>

    js代碼

    var p = $("#multipleselect")p.change(function(){console.log( p.val());});

    針對多選的情況,jQuery要如何處理?

    引入了jQuery.valHooks,修正了在不同情況下表單取值的bug,其中就有針對select的set與get的處理

    針對多選的hack

    for ( ; i < max; i++ ) {option = options[ i ];// IE6-9 doesn't update selected after form reset (#2551)if ( ( option.selected || i === index ) &&// Don't return options that are disabled or in a disabled optgroup( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {// Get the specific value for the optionvalue = jQuery( option ).val();// We don't need an array for one selectsif ( one ) {return value;}// Multi-Selects return an array values.push( value );}}

    遍歷所有的option元素,找到對應的value

    option: {get: function( elem ) {// attributes.value is undefined in Blackberry 4.7 but// uses .value. See #6932var val = elem.attributes.value;return !val || val.specified ? elem.value : elem.text;}}

    如果是多選

    values.push( value );?

    返回合集

    設值

    同樣的處理類似,通過jQuery.valHooks找到對應的處理hack

    否則直接 this.value = val;


    總結

    以上是生活随笔為你收集整理的jQuery中DOM操作方法 之 html,text,val的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 午夜精品免费观看 | 91国产精品| 欧美a级片在线观看 | 激情视频区 | 成人开心激情 | 性欧美丰满熟妇xxxx性 | 99资源| 人妻少妇精品一区二区 | 欧美xxxx69| 日韩极品视频在线观看 | 国产宾馆自拍 | 永久免费不卡在线观看黄网站 | 日韩一区二区三区高清 | 日韩毛片高清在线播放 | 狠狠欧美| 美女国产毛片a区内射 | 91免费看视频 | 香蕉久久久久 | 精品在线视频免费观看 | а√天堂资源官网在线资源 | 亚洲一区二区三区婷婷 | 亚洲精品在| 日本在线一区二区 | av五月天在线| 欧美黄色小说 | 粉嫩av一区二区 | 人与动物2免费观看完整版电影高清 | 72pao成人国产永久免费视频 | 欧美黄色性 | 亚洲av成人无码久久精品 | 午夜伦伦电影理论片费看 | 黄色香港三级三级三级 | 日本中文字幕第一页 | 高潮一区二区 | 亚洲欧美乱日韩乱国产 | 午夜爱爱免费视频 | 国产综合婷婷 | 丰满少妇被猛烈进入一区二区 | 午夜影院私人 | 蜜臀av色欲a片无码精品一区 | av一区二区三区在线观看 | 台湾佬美性中文娱乐网 | 18我禁在线观看 | 黄色福利社| 欧美人成在线 | 国产一区导航 | 国内精品国产成人国产三级 | 日本免费在线播放 | brazzers欧美一区二区 | 免费观看黄一级视频 | 制服丝袜在线播放 | 免费在线观看成人av | 国产无码精品在线观看 | 亚洲AV成人精品 | 一本色道久久加勒比精品 | av电影一区二区三区 | 日韩av在线观看免费 | 国产黄色观看 | 国产91精品露脸国语对白 | 久草青青草 | 午夜视频在线观看一区二区 | 男性裸体全身精光gay | 日韩射吧 | 蜜臀久久99精品久久久画质超高清 | 色片网站在线观看 | 超碰在线91| 精品一区欧美 | 99久久99| 奇米色影视| 国产精品3区 | 国产毛片儿 | 久久99久久99精品中文字幕 | 97久久久久久久 | 久久美女免费视频 | 日本99热| 无遮挡的裸体按摩的视频 | 麻豆国产视频 | 天天曰夜夜曰 | 久久久精品一区二区涩爱 | 成人免费看片入口 | 夜夜撸| 在线精品一区二区三区 | 日韩不卡在线播放 | 国产一级二级三级在线观看 | av在线不卡网 | 欧美丰满美乳xxx高潮www | 精品人妻无码专区视频 | 久久精品中文字幕 | 久久免费的精品国产v∧ | 久久国产影院 | 婷婷色综合 | 国产又粗又大又爽视频 | 69xx视频在线观看 | 日本一区二区不卡在线 | 国产美女啪啪 | 不卡的毛片 | 天天狠天天干 | 又黄又色又爽 | 国产精品视频在线观看免费 |