2016-07-20 10 views
0

Ich benutze JQuery 1.10.2, und ich versuche, alle Link beginnt mit Multiple Selector zu finden, ich bin sicher, dass es optimiert werden kann, aber ich nicht Fachwissen.Verwenden von Find beginnt mit Multiple Selector ignorieren Fall

Der Wähler alle Links zurückgeben muss, die mit dieser Urls beginnt:

/GalleryDetail.aspx 
/gallerydetail.aspx 
GalleryDetail.aspx 
gallerydetail.aspx 
/sketchbook.aspx 
/SketchBook.aspx 
SketchBook.aspx 
sketchbook.aspx 

in diesem Moment bin ich mit dieser:

valNow.find("a[href^='/GalleryDetail.aspx'], a[href^='/gallerydetail.aspx'], a[href^='GalleryDetail.aspx'], a[href^='gallerydetail.aspx'], 
a[href^='/sketchbook.aspx'], a[href^='/SketchBook.aspx'], 
a[href^='sketchbook.aspx'], a[href^='SketchBook.aspx']"); 

ich gesucht, und ich las, dass ich kann, benutze filter, aber da dies multiple selector ist, weiß ich nicht einmal wo ich anfangen soll. Und ich dachte auch, ich könnte damit den Ignorierfall machen.

valNow.find("a[href^='/[gG]allery[dD]etail.aspx']") 

aber irgendwie gibt es den Link nicht zurück.

Jede Hilfe sehr geschätzt

Antwort

1

Eine mögliche Lösung mit Array.prototype.filter (und Array.prototype.some)

$("a").filter((_, el) => { 
 
     var startsWith = ["/gall", "sketch"], // values to look for 
 
      href = (el.getAttribute("href") || "").toLowerCase(); // the href value as defined in the markup 
 
    
 
     return startsWith.some((val) => href.indexOf(val) == 0); // returns true if the current elements (<el>) href attribute starts with (== 0) any of the values in <startsWith> 
 
//  return startsWith.some((val) => href.indexOf(val) == 0 || href.indexOf("/" + val) == 0) 
 
     }) 
 
     .addClass("foo");
.foo { background-color: yellow }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="/GalleryDetail.aspx">/GalleryDetail.aspx</a> 
 
<a href="/gallerydetail.aspx">/gallerydetail.aspx</a> 
 
<a href="GalleryDetail.aspx">GalleryDetail.aspx</a> 
 
<a href="gallerydetail.aspx">gallerydetail.aspx</a> 
 
<a href="/SketchBook.aspx">/SketchBook.aspx</a> 
 
<a href="/sketchbook.aspx">/sketchbook.aspx</a> 
 
<a href="SketchBook.aspx">SketchBook.aspx</a> 
 
<a href="sketchbook.aspx">sketchbook.aspx</a>

+0

Danke andreas würde, ist es möglich, dass es auch ohne die abholen slash davor, oder sollte ich 'startsWith = ["/gall "," gall ","/sketch "," skizze "] verwenden' – puntapret

+0

Genau genommen wäre das nicht "beginnt mit", sondern ein "vielleicht" Anfang s mit "aber es ist sicher möglich :) Ich habe eine Alternative in den Code (die kommentierte zweite Rückkehr) hinzugefügt, die nach' 'und'/ 'sucht. Mit dieser Änderung konnte das Array 'startsWith' auf' ["gall", "sketch"] 'reduziert werden. [Hier] (https://jsfiddle.net/h04cdwd7/) ist eine Geige mit der Änderung. – Andreas

Verwandte Themen