jQuery - добавить / добавить значение в атрибут "rel" - PullRequest
9 голосов
/ 08 апреля 2011

У меня есть набор случайных ссылок, например:

<a rel="foo"> ... </a>
...
<a> ... </a>

Некоторые из них могут иметь атрибут rel, некоторые нет.

Как добавить атрибут rel со значением к каждой ссылке, а если ссылка уже есть, добавить мое значение к существующему значению / значениям?

Также, как я могу пропустить любые элементы с определенным атрибутом rel, например rel="ignore"?

Ответы [ 5 ]

16 голосов
/ 08 апреля 2011

Short 'n sweet:

$("a[rel!='ignore']").each(function() {
    this.rel += 'theValue';
});

Вы можете попробовать это здесь.

3 голосов
/ 08 апреля 2011

Это должно работать нормально:

$("a").each(function(index) {
    var curRel = $(this).attr("rel");
    if (curRel !== "ignore")
        $(this).attr("rel", curRel + " my value");
});

Простая итерация по всем якорям, добавляющая ваше значение.Если rel не существует, curRel будет пустой строкой, поэтому код не прервется.

1 голос
/ 08 апреля 2011

Немного многословно, но это следует сделать (http://jsfiddle.net/dGGFN/):

var myValue = 'abc';

$.each($('a'), function(idx, item) {
  var a = $(item);
  var rel = $(a).attr('rel');
  $(a).attr('rel', rel + myValue);
});
1 голос
/ 08 апреля 2011

Использование только attr:

var add = "some rel to add";

$('a[rel!="ignore"]').attr('rel', function (i, old) {
    return old ? old + ' ' + add : add;
});
1 голос
/ 08 апреля 2011
var toModify = $('#xxx'); /* or how ever you identify you link */
var currentAttr = toModify.attr('rel');
if(currentAttr != 'ignore'){
    toModify.attr('rel', currentAttr + '_asd');
}
...