簡體   English   中英

jQuery在版本1.7.1中未設置'textcontent'

[英]JQuery not setting 'textcontent' in version 1.7.1

我有以下代碼為HTML中的元素設置目標,href和textcontent,這在JQuery 1.4.1和1.5.1中工作得很好,但是更新到1.7.1后,它不會更改'textcontent'屬性可見元素的href已更新。

 $("#uriEmma").attr('textcontent', emmaUri);
 $("#uriEmma").attr('href', emmaUri);
 $("#uriEmma").attr('target', '_blank');

任何想法為什么會這樣?

您應該使用.prop()和正確的大小寫: textContent

從文檔:

屬性和屬性之間的差異在特定情況下可能很重要。 在jQuery 1.6之前,.attr()方法在檢索某些屬性時有時會考慮屬性值,這可能會導致行為不一致。 從jQuery 1.6開始,.prop()方法提供了一種顯式檢索屬性值的方法,而.attr()則檢索屬性。

.prop( propertyName )

屬性和屬性之間的差異在特定情況下可能很重要。 在jQuery 1.6之前, .attr()方法在檢索某些屬性時有時會考慮屬性值,這可能會導致行為不一致。 從jQuery 1.6開始,.prop()方法提供了一種顯式檢索屬性值的方法,而.attr()檢索屬性。

例如,應該檢索selectedIndextagNamenodeNamenodeTypeownerDocumentdefaultCheckeddefaultSelected並使用.prop()方法進行設置。 在jQuery 1.6之前,可以使用.attr()方法檢索這些屬性,但這不在attr的范圍內。 這些沒有相應的屬性,而僅僅是屬性。

textContent是DOM屬性,而不是HTML屬性。

在舊版本的jQuery中,如果字符串大小寫與元素上的匹配屬性相同,則attr()函數幾乎總是映射到屬性。 這在jQuery 1.6中進行了更改(這是正確的),因此現在attr()幾乎唯一地映射到setAttribute並且引入了新函數prop()來設置包裝元素的屬性。

除了使用prop() ,您還需要確保大小寫正確。 JavaScript和DOM屬性使用駝峰大小寫,並以小寫字母開頭。 因此,您需要使用textContent而不是textcontent

您可以通過以下兩種方式在jQuery 1.6+中設置屬性:

// Set the first element's `textContent`
$("#someEl")[0].textContent = "test";

// Set every element's textContent
$("#someEl").prop('textContent', "test");

// Set every element's text, mapping to innerText in older browsers:
$("#someEl").text("test");

注意,如果要支持IE 8及更低版本,則需要使用text()或進行適當的測試以使用innerText代替textContent

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM