只需使用:
$('span[class^=i18n_]').text(
function(){
return this.className;
});
值得注意的是,这会将元素的文本设置为元素的类名;aspan
没有value
属性,并且html()
没有必要设置它(尽管在这种情况下它具有几乎相同的结果)。
顺便说一句,根据您的需要,您可以使用简单的 CSS 来模拟它(支持“现代”浏览器):
span[class=^=i18n_]::before {
content: attr(class);
}
一种处理多个类的方法:
$('span[class]').filter(
function(i, e) {
var el = $(e),
classes = el.attr('class').split(/\s+/);
for (var i = 0, len = classes.length; i < len; i++) {
var assessed = classes[i].indexOf('i18n_');
if (assessed === 0) {
el.data('classMatch',classes[i]);
return true;
}
}
}).text(function(){ return $(this).data('classMatch'); });
JS 小提琴演示。
以及一种处理查找的方法(使用返回的类名从对象中检索分配的值:
var lookup = {
'i18n_something' : 'Something for the "something" suffixed class.',
'i18n_somethingElse' : 'Something for the "somethingElse" version.',
'i18n_AndSomethingElse' : 'And...well, you know the drill.'
};
$('span[class]').filter(
function(i, e) {
var el = $(e),
classes = el.attr('class').split(/\s+/);
for (var i = 0, len = classes.length; i < len; i++) {
var assessed = classes[i].indexOf('i18n_');
if (assessed === 0) {
el.data('classMatch',classes[i]);
return true;
}
}
}).text(function(){ return lookup[$(this).data('classMatch')]; });
JS 小提琴演示。