Jquery работает только один раз на загрузку страницы - хотите, чтобы он работал более одного раза без перезагрузки страницы - PullRequest
3 голосов
/ 24 февраля 2012

Я хочу иметь возможность запускать этот скрипт более одного раза без перезагрузки страницы. Посмотрел att используя Live-события, но не смог разобраться. Любая помощь будет принята с благодарностью. Кстати, я новичок и сам не написал сценарий.

<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 ]

1 голос
/ 24 февраля 2012

Предположим, вы не хотите устанавливать обработчик кликов несколько раз.Это просто оставляет анонимную функцию.

Шаг 1.! Anonymous

Превратить анонимную функцию в неанонимную функцию.

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. go blammo

Используйте неанонимную функцию и используйте функцию .on() jQuery.

$(document).ready(function()
{
  ... blah ...
  blammo(null); // instead of the anonymous function.

  $(something).on("some event, maybe click", blammo);
}
1 голос
/ 24 февраля 2012

Сделайте свою анонимную функцию:

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>
0 голосов
/ 24 февраля 2012

Понятия не имею, что здесь происходит, но я все равно попробую: -)

<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>
0 голосов
/ 24 февраля 2012

Если вы хотите, чтобы какой-либо кусок js запускался более одного раза, поместите все это в функцию, а затем используйте setTimeOut() для вызова самого себя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...