当我添加以下脚本并运行时。我得到了这个:
未捕获错误:语法错误,无法识别的表达式:ul li 一个[HREF =#!ID1]
我不确定导致此问题的双引号。
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")
}
});
答案 0 :(得分:37)
使用基于属性的选择器时,需要在引号中包含特殊字符。
if ($('ul li a[href="' + id + '"]').length) {
您的选择器版本会产生
if ($("ul li a[href=#!...]").length) {
#!
会抛出无法识别的表达式。
""
转义字符
if ($('ul li a[href="#!..."]').length) {
答案 1 :(得分:12)
我尝试了
提供的解决方案https://github.com/jquery/jquery/issues/2885
对我有用。我搜索[href=#] in js and replace with [href*=\\#]
a[href*=\\#]:not([href=\\#])
答案 2 :(得分:4)
您可以在functions.php中添加以下代码
function modify_jquery() {
if (!is_admin()) {
wp_deregister_script('jquery');
wp_register_script('jquery', 'https://code.jquery.com/jquery-1.11.3.min.js');
wp_enqueue_script('jquery');
}
}
add_action('init', 'modify_jquery');
&#13;
答案 3 :(得分:0)
我收到此错误,是因为我在代码中的某些位置添加了这些行代码;
$("a[href^='#']").click(function(e {
e.preventDefault();
var position = $($(this).attr("href")).offset().top; // if you remove this line, then error won't come
});