$.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']);