我在让 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 微调器替换内容,这就是它的梨形。
我正在尝试最初的一堆 jQuery 代码,以确保我的 javascript 工作正常:
$('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链接以某种方式阻止了click事件冒泡吗?我知道有办法做到这一点,但我认为我在任何地方都不是故意这样做的。除非 OOTB rails/ujs 那样做?
所以我的问题:
- 有没有办法知道绑定了什么?
- 我的 javascript 做错了什么?
谢谢!