(请参阅下面更新问题的答案)
这不是语法错误。这是一个逻辑错误。
如果您一致地格式化代码,它会变得更加清晰:
$(document).ready(function () {
minTime(1.5);
function minTime(minTime) {
var startTime = new Date();
// Hooking up a click handler
$("[class*=bfasg] .radio").click(function () {
// This code doesn't run until/unless someone clicks
// one of the `[class*=bfasg] .radio` elements.
$("#movenextbtn").click(function () {
var endTime = new Date();
if ((endTime - startTime) / 1000 <= minTime) {
alert('You must spend at least ' + minTime + ' seconds on the question.');
return false;
} else {
return true;
}
});
});
}
});
您在那里所做的就是说“当有人单击一个[class*=bfasg] .radio
元素时,在该元素上连接一个事件处理程序#movenextbtn
。”
您可能不想等到有人单击单选按钮后才连接事件。如果您的目标是在两组元素上连接 click 事件,请将它们组合在同一个选择器中,就像在 CSS 中一样:
$(document).ready(function () {
minTime(1.5);
function minTime(minTime) {
var startTime = new Date();
$("[class*=bfasg] .radio, #movenextbtn").click(function () {
var endTime = new Date();
if ((endTime - startTime) / 1000 <= minTime) {
alert('You must spend at least ' + minTime + ' seconds on the question.');
return false;
}
});
}
});
(顺便说一句,true
从 jQuery 事件处理程序返回没有意义,所以我在上面删除了它。)
您在下面评论过:
发生的情况是我想单击单选按钮以自动触发“下一步”按钮以转到下一页,因为我每页有一个问题。
这并没有从根本上改变事情。您还没有显示按钮移动到下一页的作用,但您只需将该代码放在click
上面的一个处理程序中。例如,您仍然挂接click
单选按钮和按钮,并且您仍然使用通用代码处理该事件。例如:
$(document).ready(function () {
minTime(1.5);
function minTime(minTime) {
var startTime = new Date();
$("[class*=bfasg] .radio, #movenextbtn").click(function () {
var endTime = new Date();
if ((endTime - startTime) / 1000 <= minTime) {
alert('You must spend at least ' + minTime + ' seconds on the question.');
return false;
} else {
// ****Move to next page here****
}
});
}
});
或者,您可以让单选按钮单击触发按钮上的单击事件,如下所示:
$(document).ready(function () {
minTime(1.5);
function minTime(minTime) {
var startTime = new Date();
// Hook up `click` on the radio buttons
$("[class*=bfasg] .radio").click(function () {
// Respond to click by firing click on the #movenextbtn
$("#movenextbtn").click();
});
// Hook up `click` on the #movenextbtn
$("#movenextbtn").click(function () {
var endTime = new Date();
if ((endTime - startTime) / 1000 <= minTime) {
alert('You must spend at least ' + minTime + ' seconds on the question.');
return false;
}
});
}
});
当您可以使用通用逻辑时,我不喜欢触发这样的合成事件,但这是一种选择。