如何使用jQuery更改元素的title属性


226

我有一个表单输入元素,想要更改其title属性。这一定很容易,但是由于某种原因我找不到如何做到这一点。这是如何完成的?我应该在哪里以及如何进行搜索?

Answers:


463

在编写任何代码之前,让我们讨论属性和属性之间的区别。属性是应用于HTML标记中元素的设置; 然后浏览器解析标记并创建各种类型的DOM对象,这些对象包含使用属性值初始化的属性。在DOM对象(例如simple)上HTMLElement,您几乎总是希望使用其属性,而不是其属性集合。

当前的最佳实践是避免使用属性,除非它们是自定义的,或者没有等效的属性来补充它。由于title确实在许多s 上都作为读/写属性存在HTMLElement,因此我们应该利用它。

您可以在此处此处阅读有关属性和属性之间差异的更多信息。

考虑到这一点,让我们来操纵title...

没有 jQuery 的情况下获取或设置元素的title属性

由于title是公共属性,因此可以在使用纯JavaScript支持它的任何DOM元素上进行设置:

document.getElementById('yourElementId').title = 'your new title';

检索几乎相同;这里没什么特别的:

var elementTitle = document.getElementById('yourElementId').title;

如果您是优化专家,这将是更改标题的最快方法,但是由于您希望使用jQuery:

使用jQuery(v1.6 +)获取或设置元素的title 属性

jQuery在v1.6中引入了一种新方法来获取和设置属性。要title在元素上设置属性,请使用:

$('#yourElementId').prop('title', 'your new title');

如果要检索标题,请省略第二个参数并捕获返回值:

var elementTitle = $('#yourElementId').prop('title');

查看prop()API文档 jQuery。

如果你真的不想使用属性,或者您正在使用v1.6之前的jQuery版本,则应继续阅读:

使用jQuery 获取或设置元素的title 属性(版本<1.6)

您可以使用以下代码更改title 属性

$('#yourElementId').attr('title', 'your new title');

或使用以下方法检索它:

var elementTitle = $('#yourElementId').attr('title');

查看 jQuery 的attr()API文档


5
如果这不是一个合理的答案,那就没有答案。而且它的准确性和结构合理。+1 ...(哦,您的名字也很棒,因为它是我的:)甚至拼写都一样!)
VoidKing 2013年

@VoidKing:我倾向于重新审视并提出当前流行的答案(我只有几个)。如果我正在研究或发布问题,我会尽力提供我希望找到的所有内容。很高兴您找到了它!
2013年

@Cory好吧,说实话,当我正在寻找其他东西时(这是一个漫长的过程,但是正在寻找是否有任何方式可以设置默认HTML标题框的样式)。我没有找到我想要的东西,但是真的很佩服您为这个答案付出的努力(您展示了资源,纯.js和jQuery等)。无论如何,很好的答案!
VoidKing 2013年

@VoidKing:这可能是错误的答案,但是,如果您谈论的是当您将鼠标悬停在具有alt或title属性的项目上时出现的默认工具提示,那么也许此答案将为您提供一些见识。
2013年

@Cory先生,谢谢!
VoidKing 2013年

31

在jquery ui模式对话框中,您需要使用以下结构:

$( "#my_dialog" ).dialog( "option", "title", "my new title" );

3
救命!!当使用上面投票的答案时,标题将被更改一次,然后标题将不会更改,除非您在对话框中使用标题选项!非常感谢!
瑞安·埃利斯

我很高兴阅读评论;-)如果您需要多次更改标题,则必须在对话框选项中进行设置。
米歇尔(Michel)

从来没有想到过会被很多次接受。我很高兴它有所帮助:-)
Igor L.

15

我相信

$("#myElement").attr("title", "new title value")

要么

$("#myElement").prop("title", "new title value")

应该做到这一点...

我认为您可以在jQuery Docs中找到所有核心功能,尽管我讨厌这种格式。


7

如果您愿意,另一种选择是从jQuery对象获取DOM元素,并在其上使用标准DOM访问器:

$("#myElement")[0].title = "new title value";

正如其他人所提到的,“ jQuery方式”是使用attr()方法。见ATTR()API文档在这里


2
jqueryTitle({
    title: 'New Title'
});

第一个标题:

jqueryTitle('destroy');

https://github.com/ertaserdi/jQuery-Title


可以使用jquery库本身解决此问题。您仅应在OP提及第三方库时引用它,否则如果不使用第三方库就无法实现。
Avishek

是的,但是还有其他功能。简单但不错的解决方案...您可以检查...
ErdiErtaş15年

会有第三方库的http传输开销,可以使用常规/本地方法避免这种情况。
Avishek

另外,已经有一个更有效的广泛接受的答案。
Avishek

2

如果您要创建一个div并尝试向其中添加一个title

尝试

var myDiv= document.createElement("div");
myDiv.setAttribute('title','mytitle');

0

作为@Cᴏʀʏ答案的补充,请确保尚未在HTML元素中手动设置工具提示的标题。就我而言,由于我的JQuery函数,工具提示的span类已经具有固定的标题文本$('[data-toggle="tooltip"]').prop('title', 'your new title');不起作用。

当我在HTML span类中删除title属性时,jQuery正在运行。

所以:

<span class="showTooltip" data-target="#showTooltip" data-id="showTooltip">
      <span id="MyTooltip" class="fas fa-info-circle" data-toggle="tooltip" data-placement="top" title="this is my pre-set title text"></span>
</span>

应为:

<span class="showTooltip" data-target="#showTooltip" data-id="showTooltip">
      <span id="MyTooltip" class="fas fa-info-circle" data-toggle="tooltip" data-placement="top"></span>
</span>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.