wwe*_*are 6 jquery ruby-on-rails
我有一个jquery脚本,每2秒运行一次ajax脚本
javascript:
function getvalue(){
$.ajax({
url: "http://localhost:3000/companies/#{@company.url}",
type: "GET",
dataType: "json",
success: function (json) {
$('.blabla').html(json.clicks);
$('.tratata').html(json.shows);
}
});
}
javascript:
$(document).ready(function(){
getvalue();
setInterval('getvalue()', 2000);
});
Run Code Online (Sandbox Code Playgroud)
当我试图在资产中移动这个脚本并通过javascript_include_tag它调用它时 - 它开始在整个应用程序中工作,而不仅仅是在我称之为他的视图中.
如何解决?
UPD
我把这个脚本放到app/assets/javascripts/foobar.js中,然后打电话给他
= javascript_include_tag 'foobar'
Run Code Online (Sandbox Code Playgroud)
当 Rails 生成 app/assets/javascripts/application.js 时,它会自动包含以下行:
//= require_tree .
Run Code Online (Sandbox Code Playgroud)
它告诉rails将该目录中的每个文件包含到application.js中,默认情况下在页面的头部调用它。foobar.js 文件中的这一行:
$(document).ready(function(){
getvalue();
setInterval('getvalue()', 2000);
});
Run Code Online (Sandbox Code Playgroud)
告诉 javascript 在每次加载 DOM 时运行此代码。这就是您的代码在每个页面上运行的原因。
为了防止这种情况,你有多种选择(请参阅这篇文章了解一些想法),但最简单的可能是在 DOM 中查找一个元素,该元素仅位于你希望运行的页面上,如下所示:
$(document).ready(function(){
if( $("#element-id-only-on-foobar-pages").is(":visable") ) {
getvalue();
setInterval('getvalue()', 2000);
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |