0

属性名を変数で変更したい。ただし、定数だけにアクセスする方法に頭を悩ませることはできません。次の例では、"monkey" で始まるすべての属性名を "banana" に変更しますが、ダッシュと数字は変更しません。

以下を変更します。

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

これに:

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

誰にもヒントがありますか?

4

1 に答える 1

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);
    });
  });
};
于 2014-04-09T02:24:05.133 に答える