2011-04-02 36 views
1

我有一個cookie值替換後的真實鏈接:clickotVjQuery的:更換所有鏈接根據cookie值和點擊

我有相同的類「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>

時cookie的值是1:

  • 我必須更換與類 「T」 的所有HREF由out.php並添加目標_blank 所以我這樣做:

    $(document).ready(function(){ 
        if($.cookie('clickotV')==1){ 
         $("a.t").attr("href", "/out.php"); 
         $("a.t").attr("target", "_blank"); 
        } 
    });
  • 但我必須用戶點擊後更換連接源(不_blank)一個替代鏈接(out.php)

我如何?

+0

因此,點擊後您需要重新輸入原始鏈接嗎?所有鏈接一次或一次一個? – Orbling 2011-04-02 12:58:30

+0

是的,我需要原始鏈接後點擊 – 2011-04-02 13:23:50

回答

0

如果你需要記住數據,那麼你將不得不存儲它,幸運的是,jQuery有.data()命令爲此目的。

您將遇到的主要問題是在點擊後href更改。您可以綁定單擊事件,設置短暫超時以將值更改回並在默認操作後解除綁定單擊事件。或者嘗試使用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

好吧,我tryed。但自我點擊功能只能在我點擊的鏈接中使用。所以我需要點擊後在類「t」的所有鏈接上都有原始鏈接。 – 2011-04-02 15:19:23

+0

@PiskorskiAurélien:我明確地問過你,你以單數回答。如果你需要全部改變,那麼你需要用'$('a.t')。'()'調用''.click()'內部的'self'調用。 – Orbling 2011-04-02 16:32:00

+0

你好,謝謝你!但是,你能糾正你的代碼,因爲我是一個jQuery大新手。感謝您的耐心等待 – 2011-04-03 15:04:33