Html / Javascript:向HTML控件添加属性

需要:找到一种方法将有效的标记/属性/属性添加到普通的html控件。

我所拥有的是一些javascript / jquery将click事件添加到将显示或隐藏div的链接。 我们的想法是使用$(document).ready和一个匿名方法来创建在页面加载时由onClick调用的方法。 单击时,将显示带有一些文本的div。 这一切都很好,除了我无法弄清楚如何设置文本,以便可以在页面加载上完成。 我想要的是:

HI 

所以我可以这样做:

 $(document).ready ( function() { $("..showItLink").click ( function(event) { var containerPosition; var createdDiv; //see if the div already exists createdDiv = $(this).children(".postComment"); if (createdDiv.length == 0) { //This is where the attribute is used so that the CreateDiv //method can take the textToShow and fill the div's innerText //with it VVVVVV createdDiv = CreateDiv(this.textToShow, "postComment"); $(this).append(createdDiv); $(this).children(".postComment").hide(); } $(createdDiv).toggle(); event.preventDefault(); } ); } ); 

现在除了不是xhtml有效(meh),这只适用于IE。 Firefox只是说它不存在。 (this.textToShow)我可以使用像rel或rev这样的东西,但这看起来像是hackish。 我想知道是否有一种有效的方法。

从下面的答案解决

 comment = $(".showItLink").attr("comment"); https://stackoverflow.com/questions/644358/html-javascript-add-attribute-to-an-html-control/... createdDiv = CreateDiv(comment, "postComment"); 

搭配:

 HI 

如果您正在使用JQuery,只需使用.attr()获取并设置属性。

获取:this.attr(“textToShow”)

设置:this.attr(“textToShow”,value)

向html控件添加属性的方法是使用element.setAttribute(“attributeName”,“attributeValue”),其中“element”是要添加属性的元素。

要获取属性,请使用getAttribute(“attributeName”);

在仍然有效的情况下,您无法将自定义属性添加到HTML元素中。 它通常可以在当前的浏览器中运行,但它有点脆弱,如果你碰巧选择一个正在使用的名称(现在或将来)作为任何浏览器的HTML或JavaScript属性,冲突将阻止它工作。

HTML5提出名称以“data-”开头的属性作为有效的扩展机制。 您还可以考虑XHTML中的命名空间元素; 这在技术上仍然不是DTD的“有效XHTML”,但至少它不会发生冲突。

HI

我建议为此特定目的使用’title’属性。

执行此类操作的最佳方法是将文本隐藏在另一个元素中,然后切换该元素。 尝试这样的事情:

    clear test     
show it hello world

如果你的textToShow属性是一个expando属性,那么this.textToShow将不会返回undefined,但由于它是一个自定义属性,你需要使用jQuery的this.attr(“textToShow”)或标准DOM this.getAttribute(“textToShow”) )。