Jquery每页加载只能工作一次 – 希望它不必重新加载页面就可以多次工作

我希望能够在不重新加载页面的情况下多次运行此脚本。 看过使用直播活动,但无法弄清楚。 任何帮助将不胜感激。 顺便说一句,我是菜鸟,我自己也没有写过这个剧本。

 var $elem = $('#wrapper'); $(document).ready(function(){ $("a#trigger").click(function(event){ event.preventDefault(); var full_url = this.href; var parts = full_url.split("#"); var trgt = parts[1]; var target_offset = $("#"+trgt).offset(); var target_top = target_offset.top; $('html, body').delay(2000).animate({scrollTop:target_top}, 2000).delay(250).queue(function() { $('#arm').hide(); $('#arm').toggleClass('arm-down'); }); }); $(function(){ $('#arm').hide(); $('#arm').toggleClass('arm-down'); $('a#trigger').click(function() { $('#trigger').addClass('active'); $('#arm').delay(500).slideToggle().delay(750).queue(function() { $('#arm').toggleClass('arm-grab'); }); }); }); });  

让我们假设你不想多次设置点击处理程序。 这只是留下了无用的function。

第1步!匿名

将匿名函数更改为非匿名函数。

 function blammo(triggeringEvent) { $('#arm').hide(); $('#arm').toggleClass('arm-down'); $('a#trigger').click(function() { $('#trigger').addClass('active'); $('#arm').delay(500).slideToggle().delay(750).queue(function() { $('#arm').toggleClass('arm-grab'); }); }); } 

第2步。去blammo

使用非匿名函数并使用.on() jQuery函数。

 $(document).ready(function() { ... blah ... blammo(null); // instead of the anonymous function. $(something).on("some event, maybe click", blammo); } 

让你的匿名function:

 function(event){ event.preventDefault(); var full_url = this.href; var parts = full_url.split("#"); var trgt = parts[1]; var target_offset = $("#"+trgt).offset(); var target_top = target_offset.top; $('html, body').delay(2000).animate({scrollTop:target_top}, 2000).delay(250).queue(function() { $('#arm').hide(); $('#arm').toggleClass('arm-down'); }); }); $(function(){ $('#arm').hide(); $('#arm').toggleClass('arm-down'); $('a#trigger').click(function() { $('#trigger').addClass('active'); $('#arm').delay(500).slideToggle().delay(750).queue(function() { $('#arm').toggleClass('arm-grab'); }); }); }); } 

成function

function yourFunction(event)

这会减少你的onLoad

$(document).ready(yourFunction)

现在您可以随时调用您的function

  

如果你想让任何一块js运行多次,把整个东西放在一个函数中,然后在其中使用setTimeOut()来调用它自己。

不知道这里发生了什么,但无论如何我都会尝试:-)