JQuery + JS вычисляемый селектор - PullRequest
0 голосов
/ 03 августа 2011

Извините за неправильную формулировку названия, но вот моя проблема. Предположим, у меня есть список, где у каждого предмета есть класс:

<ol>
  <li class="chapter">Chapter 1</li>
  <li class="chapter">Chapter 2</li>
...

Я хочу выбрать элемент, который соответствует, чтобы сделать текущую главу пользователя, известную по javascript, жирным шрифтом. Поэтому, если пользователь находится в Главе 2, я бы сделал что-то вроде:

$(".chapter:eq(2)").css("font-weight", "bold");

Но я не могу сделать

$(".chapter:eq("+currentChapter+")").css("font-weight", "bold");

как это дает мне Uncaught SyntaxError: Unexpected identifier

Любая помощь будет оценена.

Редактировать: Я использую шаблон для вставки переменных, но я убедился, что currentChapter на самом деле определено и число, которое я ожидаю, будет.

function fetchContent(startSlide) {ldelim}
    var chapterSize    = {$chapterSize};
    var currentChapter = {$chapter};
    var chapterName    = "{$chapterName}";

    alert(typeof(currentChapter)); // number
    alert(currentChapter); //e.g. 3 works
    alert(currentChapter + "aaa"); //e.g. 3aaa
    $(".chapter:eq("+currentChapter+")").css("font-weight", "bold"); // doesn't work

1 Ответ

1 голос
/ 03 августа 2011

Попробуйте другой подход, извлеките все элементы, а затем выберите только тот, который вам нужен (я знаю, что лучше выбрать ваш элемент прямо в селекторе, но просто попробовать).

$(".chapter").eq(currentChapter).css("font-weight", "bold");

Также, глядя на ваш код, кажется, что currentChapter является локальной переменной внутри функции fetchContent. Вы уверены, что можете обращаться к этой переменной при вызове функции jQuery? Попробуйте проверить наличие и значение переменной currentChapter непосредственно перед вызовом функции jQuery, которая вызывает у вас проблемы.

EDIT

Из документации jQuery jQuery: селектор eq ()

Потому что: eq () является расширением jQuery, а не частью CSS спецификация, запросы с использованием: eq () не могут использовать преимущества повышение производительности обеспечивается родным DOM querySelectorAll () метод. Для повышения производительности в современных браузерах используйте $ ("your-pure-css-selector"). eq (index).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...