[英]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( propertyName )
屬性和屬性之間的差異在特定情況下可能很重要。 在jQuery 1.6之前, .attr()
方法在檢索某些屬性時有時會考慮屬性值,這可能會導致行為不一致。 從jQuery 1.6開始,.prop()方法提供了一種顯式檢索屬性值的方法,而.attr()
檢索屬性。
例如,應該檢索selectedIndex
, tagName
, nodeName
, nodeType
, ownerDocument
, defaultChecked
和defaultSelected
並使用.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.