2012-01-16 72 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