2011-07-13 158 views
2

我有一組,我轉換成按鈕,像這樣的錨:從jQuery UI的按鈕刪除懸停和默認狀態

var sideMenuAnchors = $("#divLeft a"); 
sideMenuAnchors.width("120px"); 
sideMenuAnchors.button(); 

然而當點擊這些錨之一,我希望ui-state-active保持,直到另一個按鈕被點擊...我一直無法找到一個簡單的解決方案,有沒有一個?

我已經試過這樣:

$('#anchor01').unbind('onmouseover').unbind('onmouseout'); 

這:

$('#anchor01').disable() 

但是無論做什麼,我需要,因爲ui-active-state上依然mouseout

刪除編輯 的我實現的解決方案是手動添加我需要fr的按鈕類OM jQuery的用戶界面,像這樣:

var sideMenuAnchors = $("#divLeft a"); 
    sideMenuAnchors.addClass("ui-state-default ui-button ui-button-text-only"); 
    sideMenuAnchors.width("120px"); 
    sideMenuAnchors.height("25px"); 
    sideMenuAnchors.removeClass('ui-corner-all'); 
    sideMenuAnchors.first().addClass('ui-corner-top'); 
    sideMenuAnchors.last().addClass('ui-corner-bottom'); 
    sideMenuAnchors.hover(function() { 
     $(this).addClass("ui-state-hover"); 
     },function() { 
     $(this).removeClass("ui-state-hover"); 
     }); 
+0

目前還不清楚你在問什麼。你有混合的代碼和選擇器。請提供HTML代碼並說明哪個定位點應該保持活動狀態,直到點擊哪個按鈕。 – Shef

+0

@Shef,被點擊的錨點應該保持活動......不知道你的意思是什麼:「混合代碼」它的所有JavaScript。 – NimChimpsky

+0

在您的具體情況下,哪一個會被點擊錨,哪一個會移除點擊按鈕的活動狀態?提供有意義的代碼。 – Shef

回答

2

既然你轉化成超鏈接jQuery UI的按鈕,它們之間有沒有組關係和他們都認爲是獨立的。但是,如果您正在轉換單選按鈕(具有相同的name屬性),那麼jQuery UI將維護組關係,您將獲得您想要的行爲。

所以,你可以做到這一點:首先,添加一個單選按鈕和它相關聯的標籤給每個超鏈接,然後轉換到這些按鈕:

<form> 
    <div id="divLeft"> 
     <a id="link1" href="#">Foo</a> 
     <a id="link2" href="#">Bar</a> 
     <a id="link3" href="#">Quux</a> 
    </div> 
</form> 

$(document).ready(function() { 
    $("#divLeft a").each(function() { 
     var $this = $(this); 
     var text = $this.text(); 
     var radioId = $this.attr("id") + "_radio"; 
     $this.text("").append(
      $("<input type='radio' name='buttons'>").attr("id", radioId), 
      $("<label>").attr("for", radioId).text(text)); 
    }); 

    $("#divLeft a input:radio").width("120px").button(); 
}); 

你可以看到在this fiddle結果。

+0

謝謝,錨的行爲保留,鏈接仍然工作? – NimChimpsky

+0

@Nim,它仍然在文檔中,我們只是添加內容,所以它應該仍然有效。 –

+0

我不認爲它,jsfiddle沒有反正:-( – NimChimpsky