2010-02-10 103 views
2

我試圖用jQuery來顯示和隱藏div onclick,儘管我沒有收到任何錯誤,但它並沒有顯示或隱藏任何東西。jquery show/hide div點擊?

**編輯 - 更新**

$(document).ready(function() {  
     $("#nav-inner a").click(function() { 
      var type = $(this).attr("class"); 
       $("div.v1 > div").not("." + type).stop().hide().end().filter("." + type).stop().show(); 
       return false; 
    }); 

});

這裏是jQuery的:

$(document).ready(function() { 
     if($("#nav-inner")) { 
       $("#nav-inner ul li a").click(function(evt) { 
         var type = $(this).attr("class"); 
         var rowcount = 0; 
         $('div.v1 .vc').each(function(idx,el) { 
           if(type == 'typea') { 
            if($(el).hasClass('typea')) { 
               $(el).show(); 
             } else { 
               $(el).hide(); 
             } 
           } 
         }); 
        }); 
    } 
}); 

而這裏的標記:

<div id="page"> 
    <div id="header"> 
     <div id="nav"> 
      <div id="nav-inner"> 
       <ul class="nav-inner-li"> 
        <li> 
         <a class="typea" href="#"><img src="/images/typea.png"></a> 
         <a class="typea" href="#">Type A</a> 
        </li> 
       </ul> 
      </div> 
     </div> 
    </div> 

    <div id="content"> 
     <div id="content-content"> 
      <div id="content-left"> 
       <div class="v1"> 
        <div class="vc"> 
         <div class="typea"> 
          <div class="title"> Title </div> 
          <div class="body"> Body </div> 
         </div> 

         <div class="typeb"> 
          <div class="title"> Title 2 </div> 
          <div class="body"> Body 2 </div> 
         </div> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

回答

4

這可以由簡單得多。

$(function() { 
    $("#nav-inner a").click(function() { 
    var type = $(this).attr("class"); 
    $("div.vc > div").not("." + type).stop().hide() 
     .end().filter("." + type).stop().show(); 
    return false; 
    }); 
}); 

你的第一個錯誤是#nav-inner ul其中#nav-inner實際上是ul元素。上面從被點擊的鏈接中抓取類,然後選擇該類的孩子div.v1並切換它(如果隱藏,則顯示它,如果不隱藏,則隱藏它)。

+0

我總是用e.preventDefault(),而不是返回false。糾正我,如果我錯了,但不返回false只取消當前元素的事件?並preventDefault()停止事件鏈? – fredrik 2010-02-10 08:54:53

+0

謝謝...它的工作,有點......除了需要隱藏除了那個類的div之外的所有東西。因此,點擊顯示typea divs並隱藏所有其他div ...這看起來正好相反......? – phpN00b 2010-02-10 08:55:25

+0

@fredrik:'return false'等價於'preventDefault()**和**'stopPropagation()'。 – cletus 2010-02-10 08:59:33

1

這是一個簡單的例子..

<script> 
     $(document).ready(function(){ 
      $('#divtag').click(function(){ //use # for id and . for class 
       $('#insidetag').show();  // with parameters slow,fast, or a time in milisecond 
      });        // use toggle to show and hide 
     }); 
    </script> 

<body> 
    <div id="divtag"> 
     <div id="insidetag"> 
      Click the hide and show 
     </div> 
    </div> 
</body> 
+0

您的簡單評論//使用#爲id和。class for saved me hours !! Thanks gifted! – Amod 2014-08-31 13:12:06

0

jQuery(".user-profile-info").unbind().click(function(){ 
    if(jQuery(".user-profile-info").hasClass("collapsed")){ 
     jQuery('#user-profile-submenu').css('display', 'block'); 
     jQuery(".user-profile-info").removeClass("collapsed"); 
    } 
    else 
    {  
     jQuery(".user-profile-info").addClass("collapsed"); 
     jQuery('#user-profile-submenu').css('display', 'none'); 
    } 
}); 
+0

Content of click
2016-12-02 06:34:39