jQuery の .on を Rails の ajax リンクで動作させるのに多くの問題があります。
具体的には、次のリンクがあります。
<div id="item_7_tools" class="item_tools">
<a rel="nofollow" id="book_item_7" data-remote="true" data-method="post" class="book_link" href="bookings">Book this item</a>
</div>
HTML 内のテキストの一部をトリミングしましたが、それだけで十分であり、コントローラーの応答が機能します。「このアイテムを予約する」をクリックすると、コントローラーに送られ、コントローラーが魔法をかけて、その div の内容を置き換えるパーシャルを送り返します。
そのため、ロードが機能している間に内容を ajax スピナーに置き換えようとしています。
JavaScriptが機能していることを確認するためだけに、この最初の一連のjQueryコードを試しています。
$('div.item_tools')
.on('click', 'a', function() {
console.log("clicky click")
})
.on('ajax:beforeSend', "a", function() {
console.log('the a in div.item_tools is sending its ajax command');
})
.on('ajax:complete', "a", function() {
console.log('ajax request completed');
})
a
それについての私の理解では、クラスを持つ要素内にあるリンク ( ) をクリックするitem_tools
と、この関数にバブルアップし、メッセージがコンソールに記録されます。同様に、ajax リクエストをトリガーしたリンクは、同じ処理を取得します... (そして、それを機能させることができると仮定すると、ajax ローダー スピナーの実行に取り掛かります)。
代わりに私が見ている動作は、リンクをクリックしても、コンソールにメッセージが表示されず (Firefox と chrome の両方でこれを試しています)、ajax リンクがオフになり、正しく機能することです。javascriptを完全に無視しています...これは、ajaxリンクをクリックすると、クリックイベントがバブルアップするのをブロックしたためですか? それを行う方法があることは知っていますが、故意にそれを行ったことはないと思います。OOTB rails/ujs がそうしない限り?
だから私の質問:
- バインディングが添付されているものを確認する方法はありますか?
- 私のjavascriptで何が間違っていますか?
ありがとう!