在javascript中调用一个命名函数两次

时间:2013-10-27 19:56:13

标签: javascript ajax coffeescript

我有一个函数可以通过AJAX将数据加载到div中,具体取决于select的值。选择可以加载预定值...或更改。

我需要在DOM准备就绪时运行该函数以及用户是否更改了select。每次调用get_data()都会有效,如果我只包含一个,或者另一个......但如果我在代码中留下两个调用......第二个调用将不起作用。

  jQuery ->

    f_lesson      = $("#flight_flightlesson_id")
    gi_container  = $("#gradable_items_container")
    load_box      = $("#load_box")
    lesson_tell   = $("#load_box #gradable_items")
    scenario_tell = $("#load_box #scenarios")

    get_data = ->
      if $('#flight_flightlesson_id option[value]:selected').text() == ''
        gi_container.text("You must select a lesson in the 'Flight Info' Tab")
        scenario_tell.text("")
        load_box.removeClass("is-fetching")
        lesson_tell.text "No Lesson Selected"

      else

        $.ajax
          url: "gradable_items_inputs?lesson=#{ f_lesson.val() }"

          beforeSend: ->
            load_box.addClass("is-fetching")
            lesson_tell.text("...loading gradable items")
            scenario_tell.text("...loading scenarios")

          success: (data) ->
            gi_container.html(data).find("#ajax_gradable_items_for_lesson_content")

          complete: ->
            lesson_tell.text("")
            scenario_tell.text("")
            load_box.removeClass("is-fetching")

          error: ->
            lesson_tell.text "ERROR"

  # get_data()

    f_lesson.on "change", ->
      get_data()

当DOM加载时,对get_data()的第一次调用有效......但是,on change调用没有。如果我注释掉第一次调用get_data,那么on change change就可以了。

他们为什么不工作?我的代码中有错误吗?我执行中的一个缺陷?

1 个答案:

答案 0 :(得分:0)

它看起来像是缩进问题。 f_lesson.on...似乎比get_data更深,所以通过评论或取消注释get_data,您将f_lesson...从jQuery()块内移动到顶层。

我认为你的意思是get_data()调用缩进了一个级别。