第二个提交按钮不适用于jQuery Click事件

时间:2014-06-24 01:51:32

标签: javascript jquery forms

我正在创建一个测验,但无法弄清楚为什么我的一个提交按钮无效。

以下是测验的工作原理:

在页面加载时,会出现问题,并提供可能的答案。当用户选择答案并单击“提交”时,他或她会获得有关答案是否正确的反馈。名为“next”的新按钮显示在页面底部。单击它时,应显示我的数组中的下一个问题。

问题在于:

单击时,“下一步”按钮没有执行任何操作。我设置了一个警报来测试“下一步”按钮,但它没有显示。

点击功能的设置与前一个功能完全相同,正常工作。我很难过。

这是我的JSFiddle:http://jsfiddle.net/amykirst/3eubj/2/

$(document).ready(function() {

  showQuestion();

  // When user clicks submit, grade the question
  $("input[name='submit']").click(function() {
  //alert("line 118: I clicked on submit");
  gradeQuestion();
  });

  // When user clicks "Next Question", show next question
  $("input[name='next']").click(function() {
    alert("line 124: I clicked on next");
    // update currentQuestion to next question
    currentQuestion++;
    //show question
    showQuestion();
  });

  // Prevent form from refreshing page
  $("form").submit(function(e) {
    e.preventDefault();
  });

}); // end document ready

2 个答案:

答案 0 :(得分:1)

在您附加事件处理程序时,下一个按钮是DOM的一部分,您可能希望将click事件从其父级委托给按钮。 这样,即使在处理程序注册后添加的新元素也将处理事件。

$( '.container' ).on( 'click', 'input[name="next"]', function ( e ) {
    alert( 'Load next question now!' );
} );

另请参阅此功能所源自的弃用.delegate()的文档。

答案 1 :(得分:0)

这一行:

$("input[name='next']").click(function() {
alert("line 124: I clicked on next");
// update currentQuestion to next question
currentQuestion++;
//show question
showQuestion();

});

将其更改为:

 $(document).on("click","input[name='next']",function() {
alert("line 124: I clicked on next");
// update currentQuestion to next question
currentQuestion++;
//show question
showQuestion();

});

显然你需要触发$(document),因为该按钮是动态生成的。

工作Fiddle