1

クラスにはたくさんのボタンがありますsearch_camera_btn

ボタンをクリックすると、フォームが送信されます。このステップは機能します。反対側では、ボタン クリック イベントもトリガーする必要があります。

イベント リスナーは、Ajax リクエストを送信する coffeescript ファイルに記述しましたが、最初のクリックでしか機能しません。

コードをこの要点に入れました。

Javascriptは、ボタンが初めてクリックされたときに機能しますが、その後のクリックでは失敗します。

実際には、クリックイベントハンドラーの開始時にアラートメッセージを配置しましたが、最初にのみアラートが表示されます。また、Firbug コンソールにエラー メッセージは表示されません。(クリックイベントハンドラーを起動しなかっただけだと思いました。)

$(".search_camera_btn").click ->
    alert "test"

どのボタンをクリックしても、たくさんのボタンがあります。最初のクリックで常に機能します。これが私のより詳細なソースコードです。ダウンロード

何か案は?


バグのあるコードを絞り込みます。それは、初回のみ呼び出される「Ready to enter start」メッセージです。ただし、Firebug Javascript コンソールと Rails コンソールにはエラーは表示されません。開発モードでいくつかの設定を有効にする必要がありますか?

IW2 = get_camera_list: ->
    console.log("Start")

    ajax_req = $.ajax
      url: "update_camera_list/"
      type: "GET"
      success: (resp) -> 
        # console.log resp

    res = setTimeout (->
      ajax_req
      ), 500
    console.log("End")
    return
jQuery ->
  $(".search_camera_btn").click ->
    console.log("Ready to enter start")    
    IW2.get_camera_list()

コンパイルされた CoffeeScript:

var IW2;

IW2 = {
  get_camera_list: function() {
    var ajax_req, res;
    console.log("Start");
    ajax_req = $.ajax({
      url: "update_camera_list/",
      type: "GET",
      success: function(resp) {}
    });
    res = setTimeout((function() {
      return ajax_req;
    }), 500);
    console.log("End");
  }
};

jQuery(function() {
  return $(".search_camera_btn").click(function() {
    console.log("Ready to enter start");
    return IW2.get_camera_list();
  });
});
4

3 に答える 3

5

これを変える:

    jQuery ->
      $(".search_camera_btn").click ->
        console.log("Ready to enter start")    
        IW2.get_camera_list()

為に:

jQuery ->
  $(".search_camera_btn").click ->
    console.log("Ready to enter start")    
    IW2.get_camera_list()
    return

そして、それが役立つかどうか教えてください;)

于 2013-11-12T17:27:28.003 に答える