10

タイトルですでに述べたように、変数が実際のjqXHRであるかどうかを確認する方法はありますか?

つまり(架空):

var resource = $.get('/resource');

if (resource instanceof jqXHR)
{
    // do something
}

私が解決しようとしている実際の問題は、私が取り組んでいるモーダルプラグインの問題です。

$('#element').modal({
    content : function()
    {
        return $.get('/resource');
    }
});

また、content変数はまたはのいずれstringかになりますfunction。の場合はstring静的になり、の場合はfunctionモーダルを開くたびに実行されます。

しかし、私はコールバックがまたはのいずれかcontentを返すことを許可しようとしています。文字列を使用すると、非常に簡単ですが、どうでしょうか。jqXHRstringif (typeof returned === 'string')jqXHR

私は簡単にチェックできstring、そうでない場合はそうであるstringと想定できることを知ってjqXHRいますが、プラグインをできるだけ強力にし、予期しないタイプでの作業を禁止したいと思います。

4

1 に答える 1

6

それがpromiseオブジェクトであるかどうかを確認することをお勧めします。これにより、ユーザーがより複雑なことを行う必要がある場合にカスタムの遅延オブジェクトを返すことができるという点でコードがより堅牢になります。または、同じ効果のために単にjqXHRを返すことができます。

if ($.type(resource) === "string") {
    doStuff(resource);
} elseif (resource && resource.promise) {
    resource.promise().done(doStuff);
} 
于 2013-01-29T16:28:33.590 に答える