2016-05-05 13 views
0

I Variable a (var a = "test") genannt haben, und ich brauche, um es in der alle href Attribut aller a Elemente auf einer Seite, die das Wort ONE enthalten. Alle href Werte sind nicht das gleiche, aber immer enthält das Wort ONEaktualisieren alle href-Attribute

Zum Beispiel möchte ich das ändern:

href="/page2.php?how=GO-ONE-24-title-stay" 

Um dies:

href="/page2.php?how=GO-ONE-test-24-title-stay" 
+1

also was ist die Frage? – guradio

+0

Die Frage ist, wie kann ich finden, dass alle href enthält dieses Wort und setzen Sie diese Variable :) –

+0

Möchten Sie die * Wort * 'Test' in die URL oder den * Wert * der 'Test' Variable in die URL? Ihr zweites Beispiel ist nicht klar, da es mit dem, was Sie oben sagen, kollidiert. –

Antwort

2

So etwas wie das?

$('a[href*="ONE"]').each(function(){ 
    $(this).attr('href', $(this).attr('href').replace('ONE', 'ONE-test')); 
}); 

Ihr Beispiel ist ein wenig irreführend, wenn Sie also dazu geführt, dass der Testwert eine Variable ist, dann würden Sie so etwas wie dies benötigen:

var add = 'test'; 

$('a[href*="ONE"]').each(function(){ 
    var currentHref = $(this).attr('href'); 
    $(this).attr('href', currentHref.replace('ONE', 'ONE-' + add)); 
}); 
+1

Ich würde hinzufügen, dass Sie Ihren Selektor in '$ ('a [href * =" ONE "]')' 'ändern könnten. – BenG

1

die Sie interessieren ..

$(document).ready(function(){ 
var test = "test"; 
$("a").each(function() { 
    var href_val = $(this).prop("href"); 
    if(href_val.indexOf("ONE") >= 0){ 
    href_val = href_val.replace("ONE", "ONE-"+test); 
    $(this).prop("href", href_val); 
    } 
}); 
}); 
2

Sie können etwas tun:

$(document).ready(function(){ 
    var a ="test" ; 

    $('a').each(function(){ 
     this.href = this.href.replace('ONE', 'ONE-'+a); 
    }); 
}); 

Hier ist eine funktionierende example.

2

Sie können dies erreichen, indem Sie der Methode attr() eine Funktion zuweisen; Es ist keine explizite Schleife erforderlich. Versuchen Sie folgendes:

var a = 'test'; 
$('a[href*="-ONE-"]').attr('href', function(i, href) { 
    return href.replace('-ONE-', '-ONE-' + a + '-'; 
}); 

Beachten Sie, dass die anfängliche jQuery-Selektor die Elemente beschränkt auf diejenigen geändert werden, die ONE- im href Attribut enthalten.

+0

Wenn sie diese Änderung in ** all ** ihre 'href's benötigt, was ist der Punkt, den Austausch in der Ausführungszeit zu tun? Mit einem Editor, der RegExp-Ersetzungen unterstützt, konnte sie einfach 'href = "([^ \"] +) ONE ([^ \ "] +)" 'finden und durch' href = "$ 1ONE-test $ 2" 'ersetzen. Nicht wahr? –

+0

Sind Sie der Meinung, dass Sie HTML mit RegEx analysieren? Weil das eine wirklich schlechte Idee ist. –

+0

Nein, ich schlage das nicht vor. Ich meine, wenn ich das Problem verstehe, sieht es so aus, als ob sie alle 'href's ändern möchte, um auf irgendeine Art von Testumgebung hinzuweisen. Warum also die Seite überladen, die diese Ersetzung durch jQuery in der Ausführungszeit ermöglicht? Sie konnte nur ihre 'href's in ihrem Editor finden und ersetzen. Sie braucht nur und Editor unterstützt RegExp Ersatz (wie Sublime Text) ... Oder vielleicht bekomme ich nur ihre Bedürfnisse nicht ... :) –

Verwandte Themen