Событие jQuery click - первый клик вызывает ajax, а следующий щелчок переключает - PullRequest
2 голосов
/ 07 августа 2011

У меня есть якорь, который при щелчке делает ajax-вызов, чтобы загрузить html в div и затем загрузить скрипт.Я хочу отменить привязку этого события после первого клика и заменить его другим событием клика, которое переключается между показом и скрытием этого div.Я получил это далеко, но ни одна из моих попыток зарегистрировать событие click, которое переключает работу div.

$('#anchor').click( function() {
    $('#div').load('file.html', function() {    
        $.getScript('script.js');       
        $('#anchor').unbind();
    });
});

Ответы [ 2 ]

2 голосов
/ 07 августа 2011
$('#anchor').click( function(e) {
    e.preventDefault(); // prevent the browsers following the link
    $('#div').load('file.html', function() {    

        // make sure to bind once the new script has been included
        // i.e. within .getScript's callback
        $.getScript('script.js', function() {
            $('#anchor').unbind("click").click(myShowHideFunc);
        });       
    });
});
1 голос
/ 07 августа 2011

Попробуйте это с пространством имен событий, которое помогает отсоединять только текущий обработчик событий, чтобы другие обработчики кликов не касались при отсоединении.

$('#anchor').click('click.anchor', function() {

    $('#div').load('file.html', function() {    
        $.getScript('script.js', function(){       
          $('#anchor').unbind('click.anchor').click(function(){
             $('#div').toggle();
          });
        });
    });
});
...