2011-11-29 8 views
1

私はcolorboxを2回呼び出します。最初のコールはクリックしています。colorboxコールバック混乱

$("a.nivoImageLink").colorbox({ 
    opacity:.8, 
    onComplete:function() { 
     cboxPrint(false); 
    } 
}); 

そして第二::カラーボックスが開いているときは、クリック時にその内容を印刷することができますカラーボックスは、サムネイル印刷アイコンをクリックし、開いて印刷ウィンドウで開きますカラーボックスは再び閉じ、印刷手順の後:

$("a.print").click(function() { 
    $("a.nivoImageLink:not(:hidden)").colorbox({ 
     open:true, 
     onComplete:function() { 
      cboxPrint(true); 
     } 
    }); 
}); 

これまでのところ動作します。しかし、私が印刷アイコン(2回目の呼び出し)でカラーボックスを開くと、カラーボックスはその呼び出しに関係なく、その場合にのみ開きます。これはコールバック関数です。

誰かが私を助けてくれますか?

答えて

1

私はあなたの質問を理解していないとは思っていますが、まだ朝早すぎます^^。 colorboxの仕組みを考えましたか?いったんcolorboxが開かれると、マークアップが作成され、それを表示から隠して、再び表示したいときに表示されます。もし私が正確に覚えていれば。ページ上の複数のカラーボックスから奇妙な結果が得られる場合は、カラーボックスコードをクリアする必要があります。

あなたが使用することができます

$.colorbox.remove() 

これでしょう、本当に明確なドキュメントからカラーボックスのコードのすべての痕跡。 onClosedコールバック関数のように、この問題を扱うより洗練された方法があります。

私が前に言ったように、私はあなたの問題をあまり理解していませんでしたが、これはあなたにほとんど関心がないかもしれません。幸運はすべて同じ:

+0

ありがとう。申し訳ありませんが、おそらく私の質問が十分に明確ではありません。短く、うまくいけばわかります:2つの異なるcolorbox呼び出しに1つのコールバック関数を使用し、効果を異ならせる関数で「オートプリント」をtrueまたはfalseにします。私が2回目の呼び出しをクリックすると、 "autoprint == true"と言われても、もう一方は真になるでしょう。それで全部です。 私はremove()を知っていますが、他のアセットのカラーボックスを再初期化する必要があります。私はちょうど2つの異なる機能をしなければならないと思う、それほど美しいものではないが、機能するだろう。 – Thomas

+0

ああ、はい、よくjavascriptはしばしば私たちがそれができることを望むよりも美しくない終わりに終わる。私はあなたの問題を完全に見逃しています^^私は今朝早くjsで真実と偽に問題を抱えていました。私はif(data === true){...} else {...}を使いました。トリプル・イコール( '===')を使うと、値が同じ値で同じ型であることをチェックします。私はjavascriptの教祖ではない私は恐れている、私はものが仕事をするときに満足している^^しかし、あなたのソリューションを見つけて、良いことを見てよかった – Hazza