2012-01-16 94 views
0

我想在document.ready函數中使用JQuery將title屬性=設置爲span,paragraph或div標記的內部文本。使用JQuery修改title屬性以反映元素文本值

這是我的標記:

<span class="ellipsis">Text inside span tag.</span> 
<p class="ellipsis">Text inside paragraph tag.</p> 
<div class="ellipsis" >Text inside div tag tag.</div> 

我想補充的標題屬性像這樣創建的標記:

<span class="ellipsis" title="Text inside span tag.">Text inside span tag.</span> 
<p class="ellipsis" title="Text inside paragraph tag.">Text inside paragraph tag.</p> 
<div class="ellipsis" title="Text inside div tag tag.">Text inside div tag tag.</div> 

我知道如何更改標題屬性我好像不太可能找到將其更改爲特定元素值或文本的方法。

回答

3

嘗試:

$('.ellipsis').each(function() { 
    $(this).prop('title', $(this).text()); 
}); 

.each()功能是在這樣的情況下非常有用:在你單獨爲了做一些元素需要的東西,從每個元素的情況。

+0

謝謝Pointy,現在看起來這麼容易,你爲我拼寫出來:)工作很好我會標記爲當我11分鐘結束時回答。 – 2012-01-16 19:49:58

+0

我看到我曾嘗試過。因爲我不知道要添加什麼功能。對於JQuery來說,我還很新。我也試圖使用.attr而不是.prop(我不知道2) – 2012-01-16 19:52:39

+0

之間的區別那麼'.prop()'是在1.6版本中引入的。它通過DOM節點的'.setAttribute()'和'.getAttribute()'以及直接*屬性*,明確了*屬性*之間的區別。像「className」,「id」,「name」,「tagName」,當然還有「title」應該作爲屬性來訪問。 IE(舊版本至少)不明白當你嘗試通過'.setAttribute()'設置屬性值時該怎麼做。 – Pointy 2012-01-16 19:58:14

0

假設你要與ellipsis類設置標題的每個元素,你可以這樣做:

$(".ellipsis").each(function(){ 
    $this = $(this); 
    $this.attr("title", $this.text()); 
}); 

更新

由於@Pointy指出,在jQuery的1.6或更高版本,使用.prop().attr()更好,即使大多數用法應該都會給出相同的結果。如果您想知道原因,請參閱.prop() vs .attr()

+1

從1.6版本開始,在jQuery版本中使用'.prop()'而不是'.attr()'可能更安全,特別是在舊版本的IE中。 – Pointy 2012-01-16 19:50:07