2016-10-09 3 views
0

Ich versuche, einige eindeutige Links von der Produktlistseite einer Website zu verbergen. Die href-Attributendungen dieser Links werden in meinem "hrefs" -Array festgelegt. Ich möchte nur die Endungen (anstelle der ganzen URL-s) enthalten, da der Teil vor ihnen immer gleich ist.Überprüfen Sie alle Übereinstimmungen mit kombinierten String + Array

Die Links, die ich von der Website verstecken will (in diesem Fall) sind:

https://www.example.com/products/details/4123 
https://www.example.com/products/details/4124 
https://www.example.com/products/details/4130 

Mein Skript die nächsten ist, das Problem ist, es ist nur das erste Spiel versteckt (https://www.example.com/products/details/4123).

var hrefs = [ "4123", "4124", "4130", ]; 
var fullhref = ("https://www.example.com/products/details/") + (hrefs); 
    $("[href]").filter(function(){ 
     return fullhref.indexOf(this.href) >-1; 
    }).parent().hide(); 

So kann es den ersten Teil der URL und dem letzten Teil aus dem Array verbinden und diese Verbindung entfernen, aber nur der erste. Ich brauche Hilfe, wie könnte der Code alle angegebenen URL-Endungen überprüfen (und alle ausblenden)?

+0

Was erwarten Sie '(" https://www.example.com/products/details/ ") + (hrefs)' zu tun? – Amit

+0

@Amit Ich möchte die vollständige URL mit der Zeile erstellen, auf die der Link verweist. So habe ich es geschafft, dieses Produkt zu verstecken. Ohne die volle href konnte es nichts finden. – JaSon

+0

@JaSon Ich denke, dass es eine ähnliche Antwort auf Ihre Frage gibt. Http://stackoverflow.com/questions/4758103/last-segment-of-url – ZombieChowder

Antwort

1

kann das Array mit einer Schleife ändern dann verwenden, um die Auswahl zu filtern.

var hrefs = [ "4123", "4124", "4130", ]; 

for(var i = 0; i< hrefs.length; i++){ 
hrefs[i] = "https://www.example.com/products/details/" + hrefs[i]; 
} 
+0

Das funktioniert super! Danke vielmals!! (Auch benötigt, um den "fullhref" in meiner 4. Zeile zu "hrefs" -> 'return hrefs.indexOf') zu ändern – JaSon

1

Was haben Sie jetzt würde eine Zeichenfolge produzieren:

"https://www.example.com/products/details/4123,4124,4130" 

Machen Sie einen neuen Array, das die Basis-URL und die Zahlen Array kombiniert.

var fullhref = hrefs.map(function(ref){ 
    return "https://www.example.com/products/details/" + ref 
}) 

$("[href]").filter(function(){ 
    return fullhref.indexOf(this.href) >-1; 
}).parent().hide(); 
+0

Warum verwenden Sie 'indexOf' anstelle von' === '? – pwolaq

+0

@pwolaq was ist, wenn es einen Hash oder eine Abfragezeichenfolge auch in der href hatte? – charlietfl

+0

dann sollte es 'this.href.indexOf (fullhref)' – pwolaq

Verwandte Themen