更改变量属性名称

时间:2014-04-08 22:51:31

标签: jquery jquery-traversing

我想用变量更改属性名称。但是,我无法绕过如何访问常量。在下面的示例中,我想要更改以“monkey”开头的所有属性名称,并将它们更改为“banana”,但保留短划线和数字不变。

更改以下内容:

<div monkey-20="delicious" monkey-100="delicious">

对此:

<div banana-20="delicious" banana-100="delicious">

有人有提示吗?

1 个答案:

答案 0 :(得分: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);
    });
  });
};