2017-10-18 2 views
1

私のcodeigniterプロジェクトでイベントトリガーに問題があります。私は自分のページにテーブルを動的にロードしたい。このテーブルは、私のコントローラからajax呼び出しによって返されます。そして、私はそのテーブルのスパンでクリックイベントを引き起こしたいと思います。私はこれをさまざまな方法で試しましたが、うまくいきませんでした。私はここに私のコードを添付しています。解決策を見つけるのを手伝ってください。ajax応答要素のJQueryイベントをトリガーする

コントローラ:ビューで

$str = '<table> 
     <tr> 
      <td class="cost date" id="date_'.$request['SupplyID'].'"> 
       <span class="editable" style="display: none;"> 
        <input type="text" class="expiry" autocomplete="off" data-date-id="date_'.$request['SMSSupplyID'].'">          
       </span> 
       <span class="cnt" style="display: inline;">Choose</span> 
      </td> 
      </tr> 
     </table>'; 
echo $str; 

スクリプト:

function loadmore() 
    { 
     var url; 

     url = '/SMS/SMS/loadMoreRequests'; 

     $.ajax({ 
      type: 'post', 
      url: url, 
      data: { 
       limit:val 
      }, 
      success: function (response) { console.log(response); 

       $("#requestListTable").html(response); 
       val +=10; 
      } 
     }); 
    } 

$('.date').find('.cnt').on('click', function(){ 
    console.log(1);  // for testing 
}); 

Iは、次の変更、ない使用

1)

$('.date').find('.cnt').live('click', function(){ 
    console.log(1);  // for testing 
}); 

2)

0を試し
$('.date').find('.cnt').click(function(){ 
    console.log(1);  // for testing 
}); 
+0

私の答えを試してくださいあなたの問題を解決することを願っています。 –

答えて

1

を試すことができます。あなたはこのためにイベントの委任を使用することができます

$(document).on('click','.cnt',function(){ 
    alert("Processing comes here"); 
}); 
+0

は問題なく動作します。ケタンありがとう。 – geeth

+0

@geeth私の答えを受け入れてくれてありがとう。あなたをお手伝いします。 –

2

あなたが動的に作成された要素にイベントを委任する必要があり、この

$(document).find(".cnt").on("click",function(){ 
    console.log(1);  // for testing 
}); 
+0

は、まだこれは、それは「イベントの委任」を意味するものではありません「on」にだけ使用して@AnoopJoshi – geeth

+0

動作していません。あなたのコードは、通常のクリックイベントバインディングと同じです。 –

+0

@geeth私の編集した答えをチェックし –

2
$("container for the table").on("click", ".cnt", function() { 


}); 

。ドキュメント上のdom上に存在する親要素にイベントをバインドします。または単に使用することができます

$("body").on("click", ".cnt", function() { 


}); 
関連する問題