Para los interesados, que hizo una versión ternaria del bloque if con un control para ver qué clases tiene el elemento y qué clase s se apega.
$(document).ready(function() {
$("a").click(function (e) {
var hostname = new RegExp(location.host);
var url = $(this).attr("href");
hostname.test(url) ?
$(this).addClass('local') :
url.slice(0, 1) == "/" && url.slice(-1) == "/" ?
$(this).addClass('localpage') :
url.slice(0, 1) == "#" ?
$(this).addClass('anchor') :
$(this).addClass('external');
var classes = $(this).attr("class");
console.log("Link classes: " + classes);
$(this).hasClass("external") ? googleAnalytics(url) :
$(this).hasClass("anchor") ? console.log("Handle anchor") : console.log("Handle local");
});
});
El análisis bits Google puede ser ignorado, pero esto es donde le apetezca hacer algo con la url ahora que ya sabe qué tipo de enlace que es. Solo agrega el código dentro del bloque ternario. Si solo quiere marcar 1 tipo de enlace, reemplace los ternarios con una declaración if en su lugar.
Editado para agregar un problema que encontré. Algunos de mis hrefs fueron "/ Courses /" como tal. Hice un control para una página local que verifica si hay una barra al principio y al final del href. Aunque basta con comprobar que hay un '/' al principio, probablemente sea suficiente.
quieres comprobarlo cuando se hace clic en el enlace o al cargar la página ? – Elangovan
carga de la página, gracias. – Matrym
Tu respuesta no funciona. Todas las comprobaciones deben hacerse en 'element.href' (desde DOM) en lugar de' $ (elemento) .attr ('href') '. Prueba: http://jsfiddle.net/rahzy/1/ Por favor, acepte la respuesta de Sean. – Nowaker