使用するだけです:
$('span[class^=i18n_]').text(
function(){
return this.className;
});
これにより、要素のテキストが要素のクラス名に設定されることに注意してください。aには属性span
がなく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フィドルデモ。