我有一个输入字段,当一个单词正确时,这些输入字段会变为按钮。但是,现在我希望在不再存在输入字段时停止计时器。怎么做?这是我启动计时器的方式:
$(document).one('keydown', '.syl-input', function(){
T.start();
});
现在:我想创建一个检查以查看此输入字段是否仍然存在:
var sylInput = $('<input/>', {
'type': 'text',
'class': 'form-control syl-input',
'name': +c++,
'id': +idsyll++
})
如果不再存在,则应停止计时器T.stop()
,但只要有输入字段,就不应触发它。我确实找到了一些与我想要的东西有关的东西,但这并不完全是我想要的-> Is there an "exists" function for jQuery?。
我想到了下一件事(基于上面的链接)
if ('.syl-input' === 0) {
T.stop();
}
但是我认为在创建此each
语句之前应该有一个if
循环吗?
要向您展示我输入字段所在的完整代码(也许会改变游戏规则)?
$.map(exercise.syllables, function (syllable, j) {
if (!syllable || !syllable.trim().length) {
// If it doesn't exist or is an empty string, return early without creating/appending elements
return;
}
var innerSylCol = $('<div/>', {
class: 'col-md-3 inputSyllables'
});
var sylInput = $('<input/>', {
'type': 'text',
'class': 'form-control syl-input',
'name': +c++,
'id': +idsyll++
}).on('blur', function() {
var cValue = $(this).val();
if(cValue === "") {
return;
}
if (cValue === syllable) {
correctSylls.push(cValue);
console.log(correctSylls);
}
if (exercise.syllables.length === correctSylls.length) {
$(this).closest('.syll-row').find('input.syl-input').each(function () {
$(this).replaceWith(getCorrectBtn($(this).val()))
});
S.addRight();
S.playRight();
} else if (cValue !== syllable){
// $(this).css({'color':'#e00413'});
S.playWrong();
S.addWrong();
}
});
innerSylCol.append(sylInput);
sylRow.append(innerSylCol);
});
idsyll = 0;
sylCol.append(sylRow);
exer.append(colLeft, sylCol);
exerciseArea.append(exer);
});
return exerciseArea;
}
答案 0 :(得分:0)
您在正确的轨道上。您只需要将其更改为jQuery选择器,就像这样
$('.syl-input')
并检查返回对象的length属性,就像这样
if ( $('.syl-input').length ) {
T.stop();
}
如您所引用的答案中所述,JavaScript值是真实的,这意味着您可以在控制流的IF语句中使用它们。