-1

特定の情報を取得するパーシャルをレンダリングするために AJAX 呼び出しを起動する非常に複雑なフォームがあります。

ボタンのように動作する要素に .on('click') イベントをバインドしたいという特定のシナリオで壁にぶつかりました。問題は、この要素が、部分的な更新中に破棄される他の要素内に深くネストされていることです。HTML の例を次に示します。

<div id="locations_grid"><%= render 'table' %>

そしてパーシャルの場合:

<fieldset>
  <legend>List</legend>
  <div class="lists>
    <div class="project_list">
      <div id="pagination_link">
        <a class="more">
            More records
        </a>
      </div>
    </div>
  </div>
</fieldset>

私の例から、「クリック」イベントを「more」クラスにバインドしたいと考えています。これは、div とフィールドセットの配置でネストされています。「location_grid」がhtmlをレンダリングするのを見ると、これが.on()イベントのアンカーポイントになり、部分がリフレッシュされた後に破棄されないので、私の最初の試みは次のとおりでした:

$('#locations_grid').on('click','.more', function(){
  //do something
});

ただし、(私の理解では)「.more」は「#locations_grid」の直接の子ではないため、これは機能しないと思いました(そして機能しませんでした)。したがって、これまでの私の試みは、次のさまざまな組み合わせでした。

$('#locations_grid').on('click','fieldset .lists .project_list #pagination_link .more', function(){
  //do something
});

ただし、クリックイベントを「.more」クラスに正常にバインドしているものはないようです。

私が欠けているものについて誰かが何か考えを持っているなら、助けは大歓迎です! みんな、ありがとう、

4

3 に答える 3

0

以下のコードのように使用できます

   $('body').on('click','fieldset .lists .project_list #pagination_link .more', function(){
      //do something
    });

 or

  $('body').on('click','.more', function(){
      //do something
    });

仕事になると思います

于 2016-08-16T09:35:34.027 に答える
0

あなたはこれを試すことができます、それはクラス以上を持つすべての「a」にクリックリスナーを適用します;

    $('div').has(".more").on('click','.more', function(){
     //do something;
    });
于 2016-08-16T09:37:13.867 に答える
0

解決済み - 問題は、Ruby on Rails アセット パイプラインが JavaScript ファイルをロードしないという問題であることが判明しました。

明確にするために、私の最初の実装は正しかったです。

$('#locations_grid').on('click','.more', function(){
  //do something
});
于 2016-08-16T10:12:48.853 に答える