Я работаю над созданием сценария jQuery с потоком данных, в котором для определения пути, к которому должен выполняться сценарий, используется переменная окна. Ожидается, путь, как это:переменная jQuery не оценивается как ожидалось
- Первоначальная функция устанавливает переменную
window.QuestionSelector
к 0, а -1, или номер - значение
window.QuestionSelector
при 0 означает совершенно новый родительский викторины, -1 означает новый вопрос, а число означает существующий вопрос.
Это код, который вызывает функцию Вопрос
$(".questionJumpLink").click(function() {
//questionJumpLink will have a data-attribute attached if you're selecting a different question
if ($(this).attr('data-questionid')) {
window.QuestionSelector = $(this).attr('data-questionid');
console.log("Question ID " + window.QuestionSelector + " requested");
}
if (window.QuestionSelector == -1) {
console.log("New question request detected");
}
questionFunction();
}
В этом случае заявление, часть questionFunction()
, срабатывает несмотря на то значение window.QuestionSelector является -1.
//Used when navigating between questions, not on initial load. QuestionSelector
//is the QuestionID being requested. -1 can be set for a new question indicator
if (window.QuestionSelector != 0 && window.QuestionSelector != -1)
{
console.log("Question switch, same quiz path switch");
//Some code and handling, not vital
}
Это если заявление, непосредственно ниже выше блока кода в questionFunction()
, это один я ожидаю быть вызвана:
if (window.QuestionSelector != 0 && window.QuestionSelector === -1) {
console.log("New question path");
$("#quizQuestion").unbind();
$("#quizQuestion").focusout(function() {
questionField();
console.log("Build Answers called");
buildAnswers();
$("input[name^=AnswerOrder]").unbind();
enableAnswerOrderSave();
$("[name^=AnswerID]").unbind();
autoCheckboxOnChange();
$("input[id^=IsValidAnswer]").unbind();
AnswerAcDeac();
$("input[name^=IsCorrectAnswer]").unbind();
AnswerCorrectUpdate();
})
}
==
Going или ===
, кажется, не имеет никакого значения. Я проверял в отладчике window.QuestionSelector
равно -1.
Используйте '.data()' для получения значений атрибутов 'data-foo', а не' .attr() ' – Pointy
. Сначала я написал код таким образом, но по какой-то причине он не работал последовательно. Я отступил на прежний путь, но я согласен, что метод '.data()' является предпочтительным. – Dreamcasting
Обратите внимание, что '.data()' никогда не будет обновлять атрибут DOM - он будет читать его из DOM, чтобы инициализировать карту данных jQuery, но это все. (Как правило, так вы хотите, чтобы он работал.) – Pointy