$.addRel()
by Laurens Maneschijn
HTML
see console
$.addRel() (analog to $.addClass() )
JavaScript
(function( $ ) {
if(!$ || !$.fn){return alert('$ missing');}
function addRel(obj, values){
var $obj,rel,rel_array, values_arr;
$obj = $(obj);
if(!$obj.length){return;}
rel = $(obj).attr('rel');
if(typeof rel === 'string' && $.trim(rel) !== ''){
rel_array = $.trim(rel).split(/\s+/);
}else{
rel_array = [];
}
if(typeof values === 'string'){
values_arr = $.trim(values).split(/\s+/);
}else if(typeof values === 'object' && values.length){
values_arr = values; // already (non empty) array
}else{
return;
}
$.each(values_arr, function(i, value){
value = $.trim(value);
if(value != '' && $.inArray(value, rel_array) === -1){
rel_array.push(value);
}
});
$obj.attr('rel', rel_array.join(' '));
}
window.addRel = addRel;
$.fn.addRel = function(values){
this.each(function(i, obj) {
addRel(obj, values);
});
return this;
}
}( window.jQuery ));
/*
addRel(null, 'noopener noreferrer');
$a = $('<a>');
addRel($a, 'noopener noreferrer');
$b = $('<a rel=" b c ">');
addRel($b, 'noopener noreferrer');
console.log($a.attr('rel'));
console.log($b.attr('rel'));
*/
$('body').append('<a></a> <a rel></a> <a rel=""></a> <a rel=" a b "></a>');
$('a').addRel(' rel1 rel2 ');
console.table($('a').get(),['rel']);