Изменить имя атрибута переменной
Я хочу изменить имена атрибутов с помощью переменных. Тем не менее, я не могу обернуться, как получить доступ только к константе. В следующем примере я хочу изменить все имена атрибутов, начинающиеся с "monkey", и изменить их на "banana", но оставить тире и цифры без изменений.
Измените следующее:
<div monkey-20="delicious" monkey-100="delicious">
К этому:
<div banana-20="delicious" banana-100="delicious">
У кого-нибудь есть советы?
1 ответ
Решение
Я могу утверждать, что ваше конкретное требование изменить имена атрибутов несколько необычно, поэтому вам может подойти несколько неортодоксальное решение в виде плагина jQuery:
$.fn.renameAttrs = function() {
var oldName = arguments[0] + '-',
newName = arguments[1] + '-';
return this.each(function() {
var $node = $(this),
attrs = [];
$.each(this.attributes, function() {
var index = this.name.indexOf(oldName);
if (!index) {
$node.attr(newName + this.name.substr(oldName.length), this.value);
attrs.push(this);
}
});
$.each(attrs, function() {
$node.removeAttr(this.name);
});
});
};