2011-04-02 6 views
1

クリックした後、真のリンクを置き換える:clickotVのjQuery:すべてのリンクによって、クッキーの値を交換し、私はクッキーの値を持つ

私は同じクラスの「T」で複数のhrefを持っている:

  • <a href="link1.html" class="t">link1</a>
  • <a href="link2.html" class="t">link2</a>
  • <a href="link2.html" class="t"><img src="image2.jpg" /></a>

ときにクッキーの値が1である:

  • 私はので、私はこれを行うout.phpことにより、クラス "T" を持つすべてのhrefを交換し、ターゲット_blank を追加する必要があります。

    $(document).ready(function(){ 
        if($.cookie('clickotV')==1){ 
         $("a.t").attr("href", "/out.php"); 
         $("a.t").attr("target", "_blank"); 
        } 
    });
  • しかし、私がしなければなりません置き換えリンクをユーザーがクリックした後(_blankなし)リンク元を置き換える(out.php)

どのようにしていますか?

+0

クリックすると元のリンクに戻る必要がありますか?すべてのリンクは一度に、または一度に1つずつですか? – Orbling

+0

はいクリック後に元のリンクが戻る必要があります。 –

答えて

0

データを覚えておく必要がある場合は、データを保存する必要があります。幸いなことに、jQueryには.data()コマンドがあります。

大きな問題は、クリッククリックした後に変更することです。クリックイベントをバインドするか、値を戻す短いタイムアウトを設定し、デフォルトのアクションの後にクリックイベントをバインド解除することもできます。または、javascriptでページを開こうとすると、それはしばしばブロックされます。

編集:最初のクリックですべてのリンクをリセットするように変更しました。

$(document).ready(function() { 
    if ($.cookie('clickotV') == 1) { 
     $('a.t').each(function() { 
      var self = $(this); 
      self.data('old-href', self.attr('href')) 
       .attr({ 'href': '/out.php', 
         'target': '_blank' }); 

      // Timeout - option 1 
      self.click(function() { 
       setTimeout(function() { 
        $('a.t').each(function() { 
         $(this).attr('href', $(this).data('old-href')).unbind('click'); 
        }); 
       }, 10); 

       // passthrough for default action 
       return true; 
      }); 

      // JS new-window - option 2 
      self.click(function() { 
       var newWindow = window.open(self.attr('href'), '_blank'); 

       $('a.t').each(function() { 
        $(this).attr('href', $(this).data('old-href')).unbind('click'); 
       }); 

       newWindow.focus(); 
       return false; 
      }); 
     }); 
    } 
}); 
+0

ok、tryed。しかし、自己クリック機能はクリックしたリンクでのみ機能します。だから私はクラス "t"をクリックした後のすべてのリンクに元のリンクを持っている必要があります。 –

+0

@PiskorskiAurélien:私はあなたにそれを明示的に尋ねたが、あなたは単数で答えた。それらをすべて変更する必要がある場合は、 '.click()'の中の 'self'呼び出しを' $( 'a.t')に置き換える必要があります。each() 'が呼び出されます。 – Orbling

+0

こんにちは、ありがとう!しかし、私はjqueryの大きな初心者ですので、コードを修正できますか?あなたの忍耐のためにありがとう –

関連する問題