jQuery выборка файла каждый раз, когда toggle () называется ошибкой - PullRequest
1 голос
/ 01 марта 2012

У меня есть скрипт jQuery:

$(".show-div").data('loaded',false).click(function() {
    $.post("script.php", {id_1: var_id_1, id_2: var_id_2}, function(data){
        $(this).data('loaded',true);
        $("#display").html(data);
    });

    $("#display").toggle('fast');
    return false;
});

Загружает страницу (script.php) и отображает ее содержимое в элементе #display с текущей страницы. Теперь я пытаюсь загрузить script.php только при первом нажатии .show-div, но вместо этого он загружается каждый раз. Зачем? Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 01 марта 2012
$(".show-div").click(function() {
    if (!$(this).data('loaded'))  // <====
    {
        $.post("script.php", {id_1: var_id_1, id_2: var_id_2}, function(data){
            $("#display").html(data);
            $(this).data('loaded',true);
        });
    }

    $("#display").toggle('fast');
    return false;
});

Другой путь:

$(".show-div").one('click', function() {
    $.post("script.php", { id_1: var_id_1, id_2: var_id_2}, function(data) {
            $("#display").html(data);});
    return false;
}).click(function() {
    $("#display").toggle('fast');
    return false;
});​
1 голос
/ 01 марта 2012

Проверьте, являются ли данные ('загруженные') истинными, не совершайте ajax-вызов, если оно

$(".show-div").click(function() {
    var $this = $(this);
    /* check if loaded*/
    if (!$this.data('loaded')) {// only call ajax first time
        $.post("script.php", {id_1: var_id_1,id_2: var_id_2}, function(data) {
            $this.data('loaded', true);
            $("#display").html(data);
        });

    }
    $("#display").toggle('fast');
    return false;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...