我有一个CSS类
.uppercase:hover { text-transform: uppercase; }
因此,每当我使用它时,文本都会变换,但在少数情况下,我希望其中的一些文本不会被大写。 (取消.uppercase:hover
)。例如:
Abc cake smurf cafe Zzz
- > ABC CAKE smurf CAFE ZZZ
我想用JavaScript而不是CSS来做这件事。
更新
Abc cake (smurf) cafe Zzz
- > ABC CAKE smurf CAFE ZZZ
答案 0 :(得分:2)
在悬停时覆盖您不希望大写的项目的文本转换值。
使用jQuery:
$(".uppercase").each(function(){
// wrap case-insensitive occurrences of the words smurf, blue, and stuff
// with a span that cancels the affect of the inherited text-transform property
// from its ancestor's `uppercase` class.
this.innerHTML = this.innerHTML.replace(/(smurf|blue|stuff)/ig, "<span style='text-transform:none;'>$1</span>");
});
答案 1 :(得分:0)
回答你对问题的最后评论:是的,如果你可以使用一些保留字符,你可以毫不费力地实现这一点:
<a class="uppercase" href="#">everything uppercase, except (this) word</a>
$(document).ready(function () {
$('.uppercase').each(function() {
var end = false;
var s = $(this).html();
while(end == false) {
var p1 = s.indexOf('(');
var p2 = s.indexOf(')');
if (p1 != -1) { /* if '(' is found in the string */
var result = s.substring(0,p1);
result += '<span style="text-transform:none">';
result += s.substring(p1+1,p2);
result += '</span>'
result += s.substr(p2+1);
s = result;
} else {
end = true;
}
}
$(this).html(result);
})
})