Jquery每页加载只能运行一次 - 希望它不必重新加载页面就可以多次运行

时间:2012-02-24 16:42:28

标签: javascript reload jquery

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

<script type="text/javascript">

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');
            });
        });
    });
});
</script>

4 个答案:

答案 0 :(得分:1)

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

步骤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);
}

答案 1 :(得分:1)

制作匿名函数:

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 yourFunction(event)

将你的onLoad减少到

$(document).ready(yourFunction)

现在您可以随时调用您的功能

<script>
//call your function
yourFunction(null)
</script>

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

<script type="text/javascript">
$(function(){
    $('#arm').hide().toggleClass('arm-down');
    $('#trigger').on('click', function(event) {
         event.preventDefault();
         var hash = this.href.split("#"),
             target_top = hash[1].offset().top;
         $(this).addClass('active');
         $('#arm').delay(500).slideToggle().delay(750).queue(function() {
             $(this).toggleClass('arm-grab');
         });
         $('html, body').delay(2000).animate({scrollTop:target_top}, 2000).delay(250).queue(function() {
             $('#arm').hide().toggleClass('arm-down');
         });
    });
});
</script>