0

2 つのコードがあります。まず、含まれている閉じるボタンで div を開くように切り替えるコードがあります。

http://jsfiddle.net/spadez/uhEgG/27/

$(document).ready(function () {


    $('#country').click(function () {
        $("#country_slide").slideToggle();
    });

    $('#close').click(function (e) {
        e.preventDefault();
        $('#country_slide').slideToggle();
    });

});

次に、div が開かれたときに起動するように設計された Ajax コードもあります。

$(function () {
    $('#country_link').on('click', function () {
        $.ajax({
            type: 'GET',
            dataType: 'html',
            url: '/ajax/test.html',
            timeout: 5000,
            beforeSend: function () {
                $('.loader').show();
            },
            success: function (data, textStatus) {
                $("#country_slide").html(data);
                alert('request successful');
            },
            error: function (xhr, textStatus, errorThrown) {
//                $("#country_slide").hide('fast');
//                alert('request failed');                
            },
            complete: function () {
                $('.loader').hide();
            },
        });
        return false;
    });
});

私が今立ち往生しているのは、divが開かれているときにのみajaxを実行するにはどうすればよいですか? トグルと閉じるボタンを使用しているため、クリックが何をしているのか、開いているのか閉じているのかを理解するのは難しいようです。

私のオプションは、何らかのフラグを設定するか、代わりに「if」コードを設定することだと思います。そのため、クラスが .hidden と等しい場合は実行しないでください。これらのソリューションのいずれも統合できませんでした。また、これを達成するための適切な方法がどちらかであるかどうかもわかりません。

4

3 に答える 3

1

スライド関数の一部としてチェックを含めます。

$("#country_slide").slideToggle(function() {
    if ($(this).is(":visible")) {
        alert("im visible!");
    }
});

デモ: http://jsfiddle.net/tymeJV/uhEgG/28/

于 2013-06-06T14:09:34.757 に答える