2015-07-03 13 views
20

Wenn ich unten Skript hinzufügen und ausführen. bekommen,Syntaxfehler, nicht erkannte Ausdruck für href

Uncaught Error: Syntax error, unrecognized expression: ul li a[href=#!id1]

Nicht sicher, welches doppelte Zitat das Problem verursacht. Kann jemand pls helfen, das Problem zu lösen?

HTML

<ul> 
<li class="slist selected" id="id1"><a href="#!id10">Test1/a></li> 
<li class="slist" id="id2"><a href="#!id20">Test2</a></li> 
<li class="slist" id="id3"><a href="#!id30">Test3/a></li> 
</ul> 

JS

$(document).ready(function() { 
    var id = "#!" + window.location.href.split("!")[1]; 
    if ($("ul li a[href=" + id + "]").length) { 
     console.log("present");  
    } else {  
     console.log("absent") 
    } 
}); 
+1

Nach den W3-Spezifikationen, das Ausrufezeichen ist für das id-Attribut nicht gültig. http://www.w3.org/TR/html4/types.html#type-id – InbetweenWeekends

Antwort

28

Sie müssen in Anführungszeichen Sonderzeichen einzuschließen, wenn ein Attribut basierte Selektor.

if ($('ul li a[href="' + id + '"]').length) { 

würde Ihre Version des Wählers

if ($("ul li a[href=#!...]").length) { 

Der #! wird nicht erkannte Äußerung werfen führen.


Meine Version, wo die "" die Escape-Zeichen

if ($('ul li a[href="#!..."]').length) { 
3

Sie den Code unten in functions.php

function modify_jquery() { 
 
if (!is_admin()) { 
 
\t wp_deregister_script('jquery'); 
 
\t wp_register_script('jquery', 'https://code.jquery.com/jquery-1.11.3.min.js'); 
 
\t wp_enqueue_script('jquery'); 
 
} 
 
} 
 
add_action('init', 'modify_jquery');
zur Verfügung gestellt kostenlos in

+0

Das hat funktioniert. Es scheint, dass jquery unter der obigen Version Probleme hatte. Danke für das Aufzeigen. – Rexford

9

Ich habe versucht, die Lösung von

https://github.com/jquery/jquery/issues/2885 

was für mich funktionierte. Ich suche nach [href=#] in js and replace with [href*=\\#]

a[href*=\\#]:not([href=\\#]) 
Verwandte Themen