如何重新运行函数并更新变量值?

时间:2016-09-11 21:33:47

标签: jquery ruby-on-rails

下面的代码可以正常工作,但它只是第一次运行,因为变量在函数完成时没有得到更新。我可以从console.log($(xyz))的返回告诉我只返回初始值#100

$(document).on('page:change', function () {
  var xyz = $('.nextinst').last().attr('href')
  var mod = $('.modal'+xzy)
  var turn = $('.pagination .next_page a').attr('href')    
  var craw = $('.glyphicon-chevron-right').last()
  $(craw).on('click', function() {

    if (!$(mod).size() > 0) {
    $.getScript(turn); 
    }
    setTimeout (function() {
      $(xyz).modal()
    }, 1000);
  });
});

我搜索了几个关于setTimeout和SetInterval的主题,但我没有得到任何正常工作。

修改:

我有一个像网络应用程序的Instagram,主页上显示缩略图,模式显示完整的图像。可以使用上一个和下一个点击模态。它是一个rails项目,照片一次分页9个。这意味着当在模态中时,如果单击上一个,但前一个照片尚未加载到DOM中,则不会加载。

var xyz = $('.nextinst').last().attr('href')会返回href,这是DOM中最后一个按钮所链接的照片的id。因此,如果照片#1-9已经分页,xyz = #10

var mod = $('.modal'+xzy)这将在函数的if statement中使用,以检查该图片的modal是否已加载到DOM中。

var turn = $('.pagination .next_page a').attr('href')这是指向下一页照片的href链接。

var craw = $('.glyphicon-chevron-right').last()是上一个按钮。

所以会发生的情况是,当单击最后一个按钮时,它会检查DOM中是否存在对象/照片,如果不存在,则会对下一页照片进行分页。然后在setTimout函数中打开该照片的模态。

这一切都正常,但是在完成所有这些之后,我需要重新开始并为xyz提供一个新值。从上面的例子。我们从照片#1-9开始,xyz = #10。然后我们再添加9张照片,所以现在我们在DOM中加载了#1-18张照片。现在,当函数重新启动时xyz应该等于#19

1 个答案:

答案 0 :(得分:0)

使用turbolinks 5,您可以使用以下包装器:

$(document).on('turbolinks:load', function(){

});