2011-08-05 5 views
0

新しいタブまたはウィンドウでそのサイトへのリンクを開くことを選択した場合、fancyboxでiframeのサイトを開きたい異なるレイアウト(完全なレイアウト)を配信する必要があります。jQueryを使用してjQueryでHREFを変更するには、その1回のクリックでのみクリックしてください。

通常のリンクではフルページが表示されますが、&タイプ= 77を最後に追加すると、CMSはiframeに適した削除されたバージョンを配信する必要があることを認識します。次のコードは、リンクがマウスの左ボタンでクリックされた場合、 "& type = 77"を添付します。

$('#mylink').mousedown(function(event) { 
     if(event.which == 1) { 
      var actualHref = $(this).attr("href"); 
      $(this).attr("href", actualHref + "&type=77"); 
     } 
    }); 

これは効果的ですが、クリックごとに部品が取り付けられます。だから、一度クリックしてfancyboxを閉じて右クリック(新しいタブで開く)しても、新しいURLに添付された部分が残ってしまいます。また、クリックごとにその部分をアタッチします。

URLを変更する代わりに、変更されたURLにwindow.locationを使用しようとしました。部分的に機能していましたが、正しいURLが表示されましたが、fancyboxが破損しました。 fancyboxは読み込みを開始しましたが、新しいページにリダイレクトされました。

多分もっと良いアプローチがあります。前もって感謝します。

答えて

3

.one方法使用する:あなたがプラグインを割り当てるとき

$('#mylink').one("mousedown", function(event) { 
     if(event.which == 1) { 
      var actualHref = $(this).attr("href"); 
      $(this).attr("href", actualHref + "&type=77"); 
     } 
    }); 

を更新 ファンシーボックスが開くためのhrefを受け入れることができますオブジェクトのように、このような何か:

$("#mylink").each(function(){ 
    var $this = $(this); 
    $this.fancybox({"href": $this.attr("href")+"&type=77"}); 
}); 

一度だけイベントを実行する(一部の人々は、単一の要素のためeachを使用するよりも/嫌いより良い方法を知っているかもしれませんが、私はそれが本当に単一の呼び出しのために重要とは思わない)

+0

私は1つの方法を知らなかったが、この場合、それはあまり役に立たないようだ。 - パーツを追加しますが、追加されたパーツはそのままです。次の「新しいタブで開く」のために、そのパーツはまだ残っています。 – Novi

+0

ああ、今は必要なものを手に入れます。申し訳ありませんが、私はちょっと質問をしました(悪い習慣!)、物理的なものを変更するのではなく、ファンシーボックスのアクティベーションコードでそれを行う方が良いでしょう。 href、fancyboxにフックするためのあなたのコードは何ですか? – Psytronic

+0

CMSに、そのページの別のレイアウトを提供する必要があることを知らせるために、hrefを変更する必要があります。私はちょうどこの$( "#mylink")のようなfancyboxを起動します。fancybox(); – Novi

1

私はこの問題を解決を願って:

var myLink = $('#mylink'); 
     var actualHref = myLink.attr("href"); 

     myLink.one("mousedown", function (event) { 
      if (event.which == 1) { 
       $(this).attr("href", actualHref + "&type=77"); 
      } 
     }); 
     myLink.one("mouseleave", function (event) { 
      if (event.which == 1) { 
       $(this).attr("href", actualHref); 
      } 
     }); 
+0

同じ問題。これは、 "&type = 77"が何度も追加されていないという問題を解決するだけです。 – Novi

+0

リンクを送信できますか?私は問題が何であるか想像するのが難しいと思う。 – XGreen

+0

私はリンクを提供できないのではないかと恐れている。短い問題:私は "index.php?id = 59"のような終わりのアドレスを持つリンクを持っていて、誰かが普通のマウスの左クリックをしたときにそのリンクが変更され、 "index .php?id = 59&type = 77 " - それはソースコードのままだったはずです。 – Novi

関連する問題