(以下の更新された質問への回答を参照してください)
構文エラーではありません。論理エラーです。
コードを一貫してフォーマットすると、少し明確になります。
$(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
」ということです。
おそらく、誰かがラジオ ボタンをクリックするまでイベントを接続するのを待ちたくないでしょう。両方の要素セットでクリック イベントをフックすることが目的の場合は、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のイベントハンドラーからの復帰は意味がないので上で削除しました。)
あなたがコメントした以下:
ページごとに 1 つの質問があるため、ラジオ ボタンをクリックすると、次のページに移動するための [次へ] ボタンが自動的にトリガーされます。
それは物事を根本的に変えるものではありません。ボタンが次のページに移動するために何をするかは示していませんが、そのコードをclick
上記の 1 つのハンドラーに入れるだけです。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;
}
});
}
});
私は、一般的なロジックを使用できる場合に、そのような合成イベントを起動することはあまり好きではありませんが、オプションです。