JavaScript返回函数问题!=

时间:2015-01-24 16:20:01

标签: javascript jquery html

我正在尝试制作自己的JS Builder。我的div的宽度有问题。

HTML

<html>
   <head>
         <meta charset="utf-8">
         <title>JSCodePlayer</title>
         <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/excite-bike/jquery-ui.css" type="text/css" rel="stylesheet" />
         <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
         <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script>
         <link rel="shortcut icon" type="image/x-icon" href="favicon.ico">
   </head>
   <body>
         <style>
             body{
                margin:0;
                padding:0;
                font-family:Lucida Sans;
             }
             #header{
                width:100%;
                height:50px;
                background-color:#0084FF;
                float:left;
                color:white;
             }
             .fixedwidth{
                margin:0 auto;
                width:1250px;
             }
             #logodiv{
                padding:12px 0 0 0;
                float:left;
                font-size:1.2em;
             }
             #rundiv{
                float:right;
             }
             #rundiv button{
               width:150px;
               padding:7px;
               border-radius:5px;
               height:50px;
               font-size:1.1em;
               background-color:#0463C8;
               border:1px solid #0084FF;
             }
             #toggles{
                margin:0 auto;
                width:324px;


             }
             #toggles ul{
                margin:0;
                border:1px solid #0463C8;
                height:47px;
                padding:0;



             }
             #toggles li{
                float:left;
                list style:none;
                padding:15px;
                position:relative;


             }
             .border-right{border-right:2px solid #0084FF;}
             .codeContainer{
                height:100%;
                width:50%;
                float:left;

                position:relative;
             }
             .codeContainer textarea{
               height:100%;
               width:100%;
               border:none;
               border-right:1px solid #0463C8;
               font-size:110%;


             }
             .codeLabel{
               position:absolute;
               top:2%;
               left:90%;
             }
             #CSSContainer, #JavaScriptContainer{
                display:none;
             }
             iframe{
               height:100%;
               width:100%;
               border:none;
             }
             .selected{
                background-color:#0463C8;
             }

         </style>
         <div id="wrapper">
               <div id="header">
                     <div class="fixedwidth">
                            <div id="logodiv">JSCodePlayer</div>     
                            <div id="rundiv"><button>Run</button></div>
                            <div id="toggles">
                                  <ul>
                                        <li class="toggles border-right selected">HTML</li>
                                        <li class="toggles border-right" >CSS</li>
                                        <li class="toggles border-right">JavaScript</li>
                                        <li class="toggles selected">Result</li>
                                  </ul>
                            </div>
                     </div>
               </div>
               <div class="codeContainer" id="HTMLContainer">
               <div class="codeLabel">HTML</div>
                     <textarea></textarea>
               </div>
                <div class="codeContainer" id="CSSContainer">
               <div class="codeLabel">CSS</div>
                     <textarea></textarea>
               </div>
                <div class="codeContainer" id="JavaScriptContainer">
               <div class="codeLabel">JS</div>
                     <textarea></textarea>
               </div>
                <div class="codeContainer" id="ResultContainer">
               <div class="codeLabel">Result</div>
                     <iframe></iframe>
               </div>
        </div>
          <script>
            var windowHeight=$(window).height();
            var headerHeight=$("#header").height();
            var codeContainerHeight=windowHeight-headerHeight;
            $(".codeContainer").height(codeContainerHeight);

            $(".toggles").click(function() {
               $(this).toggleClass("selected");
               var activeDiv=$(this).html();
               $("#"+activeDiv+"Container").toggle();
               alert(showingDivs); 
            });
            var showingDivs=$(".codeContainer").filter(function() {
               return($(this).css("display")!="none");
            }).length;
            alert(showingDivs);
            var width=100/showingDivs;
            $(".codeContainer").width(width+"%");

          </script>
   </body>

以下声明无效。我需要立即帮助。

var showingDivs=$(".codeContainer").filter(function() {
               return($(this).css("display")!="none");
            }).length;

感谢您提前花些时间和精力解决我的问题。

2 个答案:

答案 0 :(得分:2)

var showingDivs = $(".codingContainer:visible").length;假设你想要一个可见的codingContainers计数

我删除了使用.is(&#34; visible&#34;)的建议,因为它返回一个布尔值而不是一个集合

答案 1 :(得分:2)

检查jQuery docs about :visible

$(".codeContainer").filter(":visible").length;
来自jQuery docs:

  

因为:visible是一个jQuery扩展而不是CSS规范的一部分,使用:visible的查询无法利用本机DOM querySelectorAll()方法提供的性能提升。要在使用时获得最佳性能:可见选择元素,首先使用纯CSS选择器选择元素,然后使用.filter(“:visible”)