我有一个隐藏的<section />
它由 div 组成,其中包含要填充到 jQuery UI 对话框中的内容。在 document.ready 上,我想循环遍历这些 div,获取每个 div 的 id,用空格替换破折号,将每个单词大写,并将其存储在标题变量中。然后,我将在放入我的对象文字中使用它dialogs[]
大批。听起来很简单,对吧?
HTML 的精简版本:
<section id="dialog-content" class="hidden">
<div id="some-dialog">
// awesome dialog content here
</div>
<div id="another-dialog">
// awesome dialog content here
</div>
<div id="modal-dialog">
// awesome dialog content here
</div>
</section>
JavaScript 的精简版本:
var dialogs = [],
$container = $("#dialog-content");
$content = $container.find("> div");
$content.each(function (i)
{
var $this = $(this),
id = $this.attr("id"),
title = id.replace(/\-/g, " ");
console.log(title);
dialogs[dialogs.length] =
{
trigger: $("#" + id + "-trigger"),
title: title,
content: $this.html()
};
});
顺便说一句 - 我知道我可以使用$.data()
并向我的 div 添加自定义属性,但我真的想要尽可能少的标记,并且我对这种特定的可能性感到好奇。所以这并不是我的例子,而是眼前的问题。
重申一下,问题是:
如何通过 JavaScript 将变量中的每个单词大写,就像text-transform: capitalize;
CSS 中有吗?
您可以简单地编写一个函数来完成它。这是一个简单的基于正则表达式的函数:
function capitalize(text) {
return text.replace(/\b\w/g , function(m){ return m.toUpperCase(); } );
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)