仅在一个页面上运行Javascript

时间:2013-08-13 08:15:26

标签: javascript ruby-on-rails will-paginate

首先是我的javascript:

$(document).on("ready page:change", function() {

 my_paginate();
}

function mypaginate(){
if ($('body.searches').length) {
  if ($('.pagination').length) {
      ....
      ....
      url = $(' .pagination .next_page').attr('href'); // i must change this and it works... but dont understand why if i had if statement for body.searches.
      }
    }
}

我的观点:

 <body class="<%= params[:controller] %>">

我想要的是仅在my_paginate()次搜索的一个页面上运行此controller。我试着这样,但它仍然在每页上加载。我尝试为will_paginate中的rails cast 114进行无休止的滚动,但仅针对一个will_paginate对象,而不是针对网站上的所有人。我还应该怎么做?如何在一个页面上运行此脚本?现在只有当我使用搜索控制器访问页面时它才会加载,但它会在每个.paginate class上运行。

2 个答案:

答案 0 :(得分:0)

试试这个:

function mypaginate(){
   if ($('body.searches').length > 0) {
      if ($('.pagination').length > 0) {
        .........

你也可以这样做:

if($('body.searches .pagination').length > 0){
      ....

编辑: 我又读了你的问题。您想要做的另一种选择是将其放在您的视图中:

<script type='text/javascript'> mypaginate(); </script>

答案 1 :(得分:0)

当您将javascript代码放入assets文件夹中时,所有这些代码都会被预编译并填充到一个存档中,因此它可用于您的所有视图。
绕过此行为的一种方法是将此javascript代码放在视图的底部,这样只有特定的视图才能访问mypaginate函数。