我有一个rails应用程序,当点击一个链接时jQuery没有在页面上触发,尽管它应该是。我想要发生的是,如果单击链接,则警报消息将关闭,并且AJAX响应将发送到控制器。我已经关闭了点击链接的turbolinks,以及加载的jquery.turbolinks,这应该已经解决了这个链接的问题(并且在过去)。我正在使用Ruby on Rails 4.欢迎任何见解!
在位于views
的index.html.haml文件中,我有
= link_to "To be added", "#", :class => "levelup", 'data-no-turbolink' => true
现在在application.js
文件夹中的javascripts
文件中,我已加载这些行:
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require turbolinks
//= require_tree .
位于stats_uploader.js
文件夹中的javascripts
文件,可能应该执行警报,而ajax文件包含此文件:
$('.levelup').click(function() {
alert("Yeah");
var level = $('.playerlevel').text();
alert(level); //Pat
level++;
alert(level); //Pat
$.ajax({type: "GET",
url: $(this).attr("href"),
dataType: "script",
data: level ,
error: function() {
alert("AJAX failed");
},
success: function() {
alert("Success");
}
});
});
当我在页面上查看源代码时,我得到这些相关的行,表示已加载stats_uploader表单,以及应用于元素的相应类。
<script data-turbolinks-track="true" src="/assets/jquery.turbolinks.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/turbolinks.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/stats_uploader.js?body=1"></script>
...
...
...
...
<div class='container'>
yessir
Player Level
<div class='playerlevel'>
1
</div>
<!-- TODO Make Buttons to click on -->
<a class="levelup" data-no-turbolink="true" href="#">To be added</a>
</div>
答案 0 :(得分:1)
如果您的页面结构如图所示,则问题可能是您尝试连接页面中尚不存在的链接上的单击处理程序。您需要将click
设置包含在$(document).ready
函数中:
$( document ).ready(function() {
$('.levelup').click(function() { ... });
});
或缩短形式:
$(function() {
$('.levelup').click(function() { ... });
});