2

SwapOnscreenPhotosという関数呼び出しがあります。その関数のソースは次のとおりです。

function SwapOnscreenPhotos(currentPhotoSet, arrowClicked)
{
    $("#photo-list img").each(function(index) 
    { 
        $(this).attr("src", photoData[currentPhotoSet][index].url);

        if (photoData[currentPhotoSet][index].liked === true)
        {   
            $(this).addClass("liked");
        }
        else
        {
            $(this).removeClass("liked");
        }
    });

    //Animate the old photos off of the screen
    $("#match").hide("slide", { direction: "left" }, 1000);
}

私はいくつかのランダムなことを行い、関数の最後で、無条件に#matchのエフェクトを呼び出したいと思います。このエフェクトを実行したいイベントはありません(重要な場合は、イベントによって、最初にSwapOnScreenPhotosを呼び出すかどうかが決まります)。この効果をどのように実行するのですか?

編集:

申し訳ありませんが、はっきりさせておきます。私は、すべてのjQuery式が同様の式に従っているという印象を受けました。$('selector').event(function() { //function stuff});

私のコード$("#match").hide("slide", { direction: "left" }, 1000);はこの例から大きく外れています。私のコードは、次のモデルにより似ています$('selector').function。コードをいつ実行するか、いつ実行しないかを指示するイベントがないことに注意してください。このイベントなしでjQuery関数を呼び出す方法はありますか?上記のコードを実行しようとすると、次のエラーが発生します。

Uncaught TypeError:オブジェクト#のプロパティ'#'は関数ではありませんjquery.js:8780 Tween.run jquery.js:8780 tick jquery.js:8491 jQuery.fx.timer jquery.js:9032 Animation jquery.js:8555 jQuery .fn.extend.animate.doAnimation jquery.js:8871 jQuery.extend.dequeue jquery.js:1894 jQuery.fn.extend.queue jquery.js:1937 jQuery.extend.each jquery.js:611 jQuery.fn.jQuery .each jquery.js:241 jQuery.fn.extend.queue jquery.js:1930 jQuery.fn.extend.animate jquery.js:8881 jQuery.each.jQuery.fn。(匿名関数)jquery.js:8853 AnimateMatch match .js:21 SwapOnscreenPhotos match.js:70 $ .ajax.success match.js:167 jQuery.Callbacks.fire jquery.js:974 jQuery.Callbacks.self.fireWith jquery.js:1082 done jquery.js:7650jQuery。 ajaxTransport.send.callback

このエラーは、イベントを指定できなかったことが原因であると考えました。これはもっと意味がありますか?ありがとうございました

4

2 に答える 2

2

私は、すべてのjQuery式が同様の式に従っているという印象を受けました。$('selector')。event(function(){//関数のもの});

いいえ、そうではありません。すべてがイベントへの反応であるとは限りません。あなたは呼び出すことができます:

$("#match").hide("slide", { direction: "left" }, 1000);

DOMの準備が整い、選択した要素に対してアクションが実行された後はいつでも必要です。

DOMの準備が整う前にjQuery要素の選択を使用しようとしているため、発生しているエラーが発生している可能性があります。これが、通常、onReady添付ファイル内の要素を選択する必要があるものをすべてラップする理由です。このように、DOMが解析されて使用できるようになるまで、jsは実行されません。

$(function(){
   // this will execute as soon as the DOM is ready
   $("#match").hide("slide", { direction: "left" }, 1000);
});

onReadyはonLoadに似ていますが、onLoadは外部アセット(画像など)が読み込まれるのを待機するため、以前に発生しますが、DOMが読み込まれるとすぐにonReadyが発生します。

于 2012-09-14T03:22:52.747 に答える
1

JQueryUIhideを使用しようとしています; これは、JQuery UIライブラリがロードされておらず、代わりにプレーンJQueryを使用している場合に表示されるエラーメッセージです。

たとえば、Firebugを使用してこの(Stack Overflow)ページでコードを実行すると、同じエラーが発生します。

$("body").hide("slide", { direction: "left" });

TypeError:オブジェクト#のプロパティ'#'は関数ではありません


したがって、要約すると、関数を呼び出そうとしている方法に問題はありません。問題は、JQuery UIライブラリを含めることを怠ったか、正しくロードされていないことだと思います。

于 2012-09-15T04:37:48.937 に答える