2013-01-23 90 views
1

我遇到了java/css選項卡式菜單系統的難題。我已經將菜單啓動並運行了一段時間,但最近我嘗試在其中一個頁面上添加一個新的製圖系統,並且我一直難以正確顯示它。在網站加載上運行javascript

我已將它追溯到需要的css條目,以防止顯示所有選項卡式內容,直到您將鼠標懸停在每個選項卡上。 CSS是如下:

div.tabscontainer div.curvedContainer .tabcontent{ 
display:none; 
padding:20px; 
font-size:12px; 
font-family: "CenturyGothicRegular", "Century Gothic", Arial, Helvetica, sans-serif; 
} 

至於說,該顯示:沒有阻止所有的內容被顯示,直到你將鼠標懸停在標籤之一。但是,相同的顯示:無法阻止我的圖表腳本正確繪製圖表。如果我評論顯示:沒有顯示,則圖表正確繪製,但所有選項卡式內容顯示在頁面加載中。排序抓的22

但是,如果我不註釋掉顯示:無,然後將鼠標懸停在任何菜單選項卡,下面的JavaScript運行和所有相應的內容是否正確隱藏或顯示要求:

<script language="JavaScript"> 
$(document).ready(function() { 
    $(".tabs .tab[id^=tab_menu]").hover(function() { 
     var curMenu=$(this); 
     $(".tabs .tab[id^=tab_menu]").removeClass("selected"); 
     curMenu.addClass("selected"); 

     var index=curMenu.attr("id").split("tab_menu_")[1]; 
     $(".curvedContainer .tabcontent").css("display","none"); 
     $(".curvedContainer #tab_content_"+index).css("display","block"); 
    }); 
}); 
</script> 

我可以理解腳本是以僞代碼的方式做什麼的,它改變了選項卡本身的屬性(添加/刪除「選定的類」),以允許它出現「突出顯示」,同時更改內容容器的屬性(添加/刪除顯示:無或塊)以隱藏或顯示適用的每個選項卡的內容。

我現在的想法是,如果我添加上述腳本的修改版本來運行頁面加載並自動選擇第一個選項卡,那麼我可以從CSS中刪除全局顯示:none,只允許javascript整理出來。

最後,這導致了我的問題。我仍然對JavaScript不熟悉,我正試圖弄清楚如何修改上述代碼,以反映我需要它在頁面加載時自動選擇給定菜單(tab_menu_50),同時仍允許用戶將鼠標懸停在任何位置標籤。

任何你可以給的指針都很樂意接受,如果上面沒有任何意義,我提前道歉! (雖然,如果你能告訴我,我已經得到了它完全錯誤的,我會很感激的,太多!)

喬納森

試過刪除所有內容,但仍給該網站的想法結構,希望這有助於找到答案。可能有一些錯誤的標籤但是這只是因爲黑客的工作,我剛剛做了,讓我張貼在這裏的一些HTML的...

<html> 
<head> 

# Below script enables tab switch on mouseover 

<script language="JavaScript"> 
$(document).ready(function() { 
$(".tabs .tab[id^=tab_menu]").hover(function() { 
    var curMenu=$(this); 
    $(".tabs .tab[id^=tab_menu]").removeClass("selected"); 
    curMenu.addClass("selected"); 

    var index=curMenu.attr("id").split("tab_menu_")[1]; 
    $(".curvedContainer .tabcontent").css("display","none"); 
    $(".curvedContainer #tab_content_"+index).css("display","block"); 
}); 
}); 
</script> 

# Below script draws the chart 

<script type="text/javascript"> 
    $(function(){ 
    $('.charttable').visualize({type: 'line'}); 
    }); 
</script> 


<style> 


# Below style sheet contains the problematic entry of display:none 

div.tabscontainer div.curvedContainer .tabcontent{ 
display:none; 
padding:20px; 
font-size:12px; 
font-family: "CenturyGothicRegular", "Century Gothic", Arial, Helvetica, sans-serif; 
} 


</head> 

<body> 


<div class="tabscontainer"> 
    <div class="tabs"> 
     <div class="tab first selected" id="tab_menu_50"> 
      <div class="link">Home</div> 
      <div class="arrow"></div> 
     </div> 
     <div class="tab" id="tab_menu_150"> 
      <div class="link">Screen2</div> 
      <div class="arrow"></div> 
     </div> 
     <div class="tab last" id="tab_menu_250"> 
      <div class="link">Screen3</div> 
      <div class="arrow"></div> 
     </div> 
    </div> 
    <div class="curvedContainer"> 
     <div class="tabcontent" id="tab_content_50"> 
     </div> 
     <div class="tabcontent" id="tab_content_150"> 
     </div> 
     <div class="tabcontent" id="tab_content_250"> 
<table class="charttable"> 
    <caption>Visits from August 16 to August 21</caption> 
    <thead> 
    <tr> 
     <td></td> 
     <th scope="col">chartlabel1</th> 
     <th scope="col">chartlabel2</th> 
     <th scope="col">chartlabel3</th> 
     <th scope="col">chartlabel4</th> 
     <th scope="col">chartlabel5</th> 
     <th scope="col">chartlabel6</th> 
     <th scope="col">chartlabel7</th> 
    </tr> 
</thead> 
<tbody> 
    <tr> 
     <th scope="row">SuiteA</th> 
     <td>54</td> 
     <td>49</td> 
     <td>52</td> 
     <td>61</td> 
     <td>44</td> 
     <td>57</td> 
     <td>61</td> 
    </tr> 
    <tr> 
     <th scope="row">SuiteB</th> 
     <td>12</td> 
     <td>11</td> 
     <td>5</td> 
     <td>13</td> 
     <td>11</td> 
     <td>10</td> 
     <td>9</td> 
    </tr> 
    <tr> 
     <th scope="row">SuiteC</th> 
     <td>73</td> 
     <td>67</td> 
     <td>64</td> 
     <td>74</td> 
     <td>61</td> 
     <td>73</td> 
     <td>75</td> 
    </tr> 
</tbody> 
</table> 
</div> 

</div> 

</body> 
</html> 
+0

當你說'自動選擇第一個tab',什麼是「選擇第一個選項卡」? – adamdehaven

+0

這將有助於如果你可以張貼一些'HTML' .. –

+0

謝謝你的回覆 - AdamD - 對不起,我的意思是自動選擇標籤,就好像用戶在它上面一樣。將嘗試和張貼一些HTML現在... – user2000718

回答

0

只是觸發事件的DOM準備,後的懸停事件是必然您的示例代碼:

$(function(){ 
    $('#desiredTab').trigger('mouseover'); 
}); 

演示:http://jsfiddle.net/LC2un/

+0

不錯,我現在可以放棄顯示:沒有,但它仍然顯示激活得太快,並防止圖表繪製...?儘管如此... – user2000718

0

如果我正確理解你的問題,你可能想使用可見性:隱藏而不是顯示:無。

如果設置display:none,那麼除非顯式編碼維度,否則某些計算無法在這些節點上完成;計算出的尺寸(沒有固定寬度或高度的節點無法在所有瀏覽器中以可靠的方式進行計算)。

將節點設置爲可見性:隱藏本質上將其不透明度設置爲0,同時將其保留在文檔中。

嘗試更換顯示:無;與visiblity:隱藏

希望應該工作。如果沒有,你也可以嘗試使用jQuery的.hide()方法對文檔加載設置其知名度..

$("div.tabscontainer div.curvedContainer .tabcontent").hide() 
+0

感謝您的諮詢!我現在試試這個... – user2000718

+0

這使我可以刪除顯示:無,但它仍然停止圖表正常繪製..?當我們說話時,仍然可能會有用,而且我嘗試了不同的暗示,歡呼! – user2000718