2010-06-14 6 views
1

Voici html:jQuery lien coupé

<a href="http://site.com/any/different/folders/picture_name.jpg">Go and win</a> 
<a href="http://site.com/not/similar/links/some_other_name.png">Go and win</a> 

Comment couper toutes les données de a href, à l'exception picture_name.jpg? Il peut y avoir une longueur de la liaison, nous devons prendre juste la valeur de la dernière / durer "

Et personne ne sait le chemin le plus court de comparer, si alt et title de liaison en cours sont égaux?

Merci.

Répondre

5

Si vous voulez vraiment changer le href-picture_name.jpg et some_other_name.png respectivement, vous pouvez passer une fonction à .attr() et utiliser .lastIndexOf()/.substring(), comme ceci:

$("a").attr('href', function(i, href) { 
    return href.substring(href.lastIndexOf('/') + 1); 
}); 

You can view/play with a quick demo here


Alternativement, si vous utilisez un .each() vous pouvez obtenir/utiliser la valeur comme ceci:

$("a").each(function() { 
    var new_href = this.href.substring(this.href.lastIndexOf('/') + 1); 
    //use it, e.g.: alert(new_href); 
});​ 

You can see a demo of that here

+0

Je veux lancer picture_name.jpg dans une nouvelle variable. var link =? Pouvez-vous mettre à jour? – Happy

+0

@Happy - Pouvez-vous clarifier un peu? Chaque lien serait une variable différente, alors où voulez-vous que cette variable aille? Faites-vous un lien à la fois ou ...? –

+0

J'utilise chaque() -> fonction – Happy

2

Une fois que vous prenez l'un élément avec getElementsByTagName ou getElementById:

var parts = element.href.split('/') 
last_part = parts[parts.length-1] 
+0

'parts.pop()' fonctionnera aussi, ou 'split ('/'). Pop()' pour la dernière partie seulement. n'oubliez pas votre point-virgule :-) –

3
var hrefs = $("a").map(function() { 
    return this.href.substring(this.href.lastIndexOf('/')+1); 
}) 

retourne un tableau:

["picture_name.jpg", "some_other_name.png"] 

Eh bien, et l'autre question ...

Et quelqu'un connaît le moyen le plus court de comparer, si alt et title du lien actuel sont égaux?

Bien sûr, il suffit de les comparer

var currentLink = $("a")[0]; // whatever 

if (currentLink.alt == currentLink.title) { 
    // some action 
} else { 
    // some other action 
} 
+0

La deuxième partie de la réponse n'évaluera jamais à vrai, 'currentLink.alt' serait toujours indéfini, car ce n'est pas une propriété/attribut valide. Courte démonstration ici: http://jsfiddle.net/vQPQa/ –

1
var a = $("#link"); 
var link = a.href; 
alert(link.substr(0, link.lastIndexOf("/")+1)); 
alert(a.href == a.title); 
1

Vous pouvez également utiliser une expression régulière:

var url = element.href.match(/([^/]*)$/)[1];