javascript - 将事件绑定(bind)到 ajax 成功返回的 View 中的元素

标签 javascript jquery ajax laravel-4 php-5.3

我有一个按钮,它发出 AJAX 请求并用返回的 View 填充 div。然后我希望它将 1 个单击事件绑定(bind)到一个按钮,该按钮是返回的 View 内的 DOM 元素。

这是我用于获取 View 的第一个 AJAX 调用的处理程序。

// gets the next question or video
$("#next").click(function(e){
    e.preventDefault();

    $.ajaxSetup({
        headers: { 'X-CSRF-Token' : $('meta[name=_token]').attr('content') }
    });

    var host = "http://" + window.location.hostname;

    $.ajax({
        type: "POST",
        url : host + "/next",
        success : function(data){
            console.log(data);
            $('#test-content').html(data);
            $("#submit-question").bind('submit', attempt(e));
        }
    },"json");
});

这是我想要附加到事件的 attempts() 函数。这样我就可以从表单进行另一个 AJAX 调用。或者至少我认为会。

function attempt(e){

      e.preventDefault();

      $.ajaxSetup({
         headers: { 'X-CSRF-Token' : $('meta[name=_token]').attr('content') }
      });

      // input data
      var question_id = $('input:hidden[name=question_id]').val();
      var attempt =  $("input[name=attempt]").val();

      var dataString = 'question_id='+question_id+'&attempt='+attempt;

      var host = "http://" + window.location.hostname;

      $.ajax({
          type: "POST",
          url : host + "/attempt",
          data : dataString,
          success : function(data){
          console.log(data);
              $('#show-answer').html(data);
              $('#next-button').show();
          }
      },"json");

 }

所以我的问题是,无法弄清楚为什么,但是attempt()函数在第一次ajax调用后立即运行。并且它从不将事件绑定(bind)到按钮。 ajax 调用是一个接一个地进行的,没有任何延迟。也不确定我是否可以像我一样将 e 放入 attempts() 调用中。

最佳答案

您正在调用尝试,而不是分配它

$("#submit-question").bind('submit', attempt(e));

需要

$("#submit-question").bind('submit', attempt);

您也可以避免每次 html 更改时进行分配。您可以使用事件委托(delegate)并捕获 DOM 树上层的提交事件。

$('#test-content').on("submit", "#submit-question" , attempt);

关于javascript - 将事件绑定(bind)到 ajax 成功返回的 View 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26494951/

相关文章:

JavaScript + SQL、.NET

Javascript/jQuery 插件到插件以更改边框颜色,相对于元素的背景颜色

javascript - Google Chrome v55 中的 Interact.js 问题

javascript - 无法读取未定义的属性 'parent' - Node.js

jquery 动画不透明度与显示 :none

javascript - 用 Canvas 制作矩形叠加图像

javascript - 加载更多的 Gif 在我的 Rails 应用程序中不显示 Ajax 和 jQuery

javascript - 使用jquery获取 anchor 标签的数据值

javascript - 将jquery代码设置为body页面onload

javascript - jQuery 单击按钮即可中止所有 AJAX 请求(查询)