0

わかりましたので、次の HTML があります。

<a href="#" onclick="bump_add('.$fetch['photo_id'].')">
    <img id="bump_img" src="img/bump.png"/>
</a>

現在、私の Javascript/Ajax は次のようになっています。

function bump_add(photo_id) {
    $.post('php/bump_add.php', {photo_id:photo_id}, function(data){
        if (data='success') { //Handled by PHP
            bump_get(photo_id);
            toggle_visibility('bump_img')
        } else {
            alert(data);
        }
    });
}

function bump_get(photo_id) {
    $.post('php/bump_get.php', {photo_id:photo_id}, function(data){
        $('#photo_'+photo_id+'_bumps').text(data); //Handled by PHP
    });
}

function toggle_visibility(id) {
    var e = document.getElementById(id);
    if(e.style.display == 'block') {
        e.style.display = 'none';
    }
}

私はJavascriptが得意ではないので、目的を達成する方法が完全にはわかりません。

私がやろうとしているのは、'onclick' イベント (これは機能します) で、bump_add() 関数を実行し、続いて、bump_get() 関数 (これも機能します) を実行することです。しかし、最後に toggle_visibility() 関数を実行するには、このビットが機能しません。

私が間違っていることについてのアイデアはありますか?toggle_visibility() の Javascript 関数は正しくありませんか、それとも間違って使用していますか? その目的は、「bump_img」ID で img を非表示にすることです。

4

2 に答える 2

1

queueをチェックアウトすると、次のように機能します。

var div = $("div");

function runIt() {
  div.show("slow");
  div.animate({left:'+=200'},2000);
  div.slideToggle(1000);
  div.slideToggle("fast");
  div.animate({left:'-=200'},1500);
  div.hide("slow");
  div.show(1200);
  div.slideUp("normal", runIt);
}

function showIt() {
  var n = div.queue("fx");
  $("span").text( n.length );
  setTimeout(showIt, 100);
}

runIt();
showIt();

ここにデモがあります

于 2013-06-21T19:44:57.963 に答える
0

また、次のような約束を利用する必要があります。

function bump_add(photo_id) {
        $.post('php/bump_add.php', {photo_id:photo_id}, function(data){
            if (data='success') { //Handled by PHP
                bump_get(photo_id).done(function(){
                    toggle_visibility('bump_img');
                });
            } else {
                alert(data);
            }
        });
    }

    function bump_get(photo_id) {
        var promise = $.post('php/bump_get.php', {photo_id:photo_id}, function(data){
            $('#photo_'+photo_id+'_bumps').text(data); //Handled by PHP
        });
        return promise;
    }

    function toggle_visibility(id) {
        $('#' + id).slideToggle(); // just an example.
    }

アイデアは、bump_get が promise を返すというものであり、これをbump_add 関数で使用できます。

参照: jQuery deferreds and promises - .then() vs .done()およびhttp://api.jquery.com/promise/詳細について
toggle_visibility私はそれを更新しました。

于 2013-06-21T19:46:53.040 に答える