2012-10-04 101 views
0

我試圖在我的網站上有一個按鈕,當它處於活動狀態時(點擊一次)將目標_blank添加到具有某個類的href鏈接,以便它們在新標籤中打開。在按鈕上的新標籤中打開鏈接活動

這是按鈕

<li id="toolbar-display"> 
     <dl> 
     <dt>Display</dt> 
     <dd id="toolbar-display-newtab" class="first last"><span>New Tab</span></dd> 
     </dl> 
    </li> 

代碼那麼這是一個HREF鏈接類,我想補充_blank來。

<a class="item-link" href="url"> 

因此,對於這個,我用下面的JavaScript這是我從http://jsfiddle.net/UJMgQ/2/

<script type="text/javascript"> 
     $(function() { 
     $('#toolbar-display-newtab').click(function() { 
     if ($(this).toggleClass('active')) { 
     $('.item-link').attr('target', '_blank'); 
     } else { 
     $('.item-link').removeAttr('target'); 
     } 
     }); 
     }); 
    </script> 

的代碼看起來是正確的修改,但遺憾的是它不工作,我在這一點上目前還不清楚無論是否檢測到按鈕的活動狀態或無法添加_blank。任何幫助將不勝感激=)

+0

它似乎對我來說工作得很好。 – Blender

+0

嗯..奇怪它不工作在我的網站上。僅在按下按鈕時纔會添加_blank? 因爲我認爲按鈕在1次點擊後會被視爲「活動」。然後在另一次點擊「無效」。 – Stephen

回答

0

我不完全確定什麼toggleClass()返回,但根據我的測試,它不會給你一個布爾值,你可以用於其他條件..

爲什麼不試試hasClass()來檢測活動類是否已經設置,然後在檢測到之後使用toggleClass。

我試圖重新編碼您的帖子,雖然我不知道如果我有你的邏輯權。

$(function() { 
    $('#toolbar-display-newtab').click(function() { 
     if ($(this).hasClass('active')) { 
      $('.item-link').attr('target', '_blank'); 
     } else { 
      $('.item-link').removeAttr('target'); 
     } 
     $(this).toggleClass('active'); 
    }); 
}); 
+0

好吧,似乎這個函數在你點擊的時候沒有被調用。儘管查看生成的源代碼,但看起來存在衝突的JQuery問題。我想你也需要把它應用到我給你的代碼上。 要做到這一點,只需用jQuery替換所有$例如:jQuery('#toolbar-display-newtab') – ajib

+0

在這裏,我將添加一個截圖,更好地解釋我正在嘗試做什麼。 http://i.imgur.com/NpyJH.jpg – Stephen

+0

啊,你回答,而我取代了我的帖子=)好吧,我改變$(功能()爲jQuery(功能($),這樣我就不必改變所有$ 現在它工作=)但瀏覽器似乎沒有記住在新標籤上的活動狀態。該按鈕仍然是藍色的,但鏈接將不會打開一個新的標籤,直到我點擊「新標籤」按鈕。 – Stephen