JQUERY: ошибка, вызванная сбоем: ошибка синтаксиса, непризнанное выражение

console.log($('"#'+d+'"'));

в html у меня есть

<div id="2013-10-23">
    <h1>5</h1>
    <p>eeeeeeeeeeee</p>
</div>

Он выдает ошибку:

Неподготовленная ошибка: ошибка синтаксиса, нераспознанное выражение: "# 2013-10-23"

В приведенном выше коде у меня есть один div с id="2013-10-23", и при получении этого id в ответ он бросает синтаксическую ошибку

Ответы

Ответ 1

попробуйте

console.log($("#"+d));

ваше решение передает двойные кавычки как часть строки.

Ответ 2

Комбинация "двойная кавычка" + "одиночная кавычка" не требуется

console.log( $('#'+d) ); // single quotes only
console.log( $("#"+d) ); // double quotes only

Ваш селектор будет выглядеть следующим образом, который переполняется кавычками:

$('"#abc"') // -> it'll try to find  <div id='"#abc"'>

// In css, this would be the equivalent:
"#abc"{ /* Wrong */ } // instead of:
#abc{ /* Right */ }

Ответ 3

Попробуйте использовать:

console.log($("#"+d));

Это приведет к удалению дополнительных кавычек, которые вы использовали.

Ответ 4

Это также может произойти в сафари, если вы попробуете селектор с отсутствующим], например

$('select[name="something"')

но интересно, этот же селектор jquery с отсутствующей скобкой будет работать в хроме.

Ответ 5

Попробуйте console.log($("#" + d));

Ответ 6

Если вы используете jQuery 2.1.4 или выше, попробуйте следующее:

$("#" + this.d);

Или вы можете определить var перед его использованием. Это делает ваш код более простым.

var d = this.d
$("#" + d);