2013-03-23 49 views
2

使用的onclick一個div我有一個jQuery代碼:點擊數上#icon切換父母類,如果之前點擊的onclick對身體的變化而變化的類了。jQuery的:改變類的多個div的

我需要做的是對#ITEM5或#ITEM4喜歡它的點擊#icon點擊後同樣的事情發生。

<div id="header_wrap"> 
    <div id="logo"></div> 
    <div class="contact" id="ccontainer"> 
     <div id="form"></div> 
     <div id="icon"><span id="getintouch">GET IN TOUCH</span></div> 
    </div> 

    <div id="menu_wrap"> 
     <ul id="menu"> 
      <li id="item1"><a href="#">Home</a></li> 
      <li id="item2"><a href="#">About us</a></li> 
      <li id="item3"><a href="#">What we do</a></li> 
      <li id="item4"><a href="#">Portfolio</a></li> 
      <li id="item5"><a href="#">Contact us</a></li> 
     </ul> 
    </div> 
</div> 

jQuery代碼....我試着寫我自己添加的功能,但我似乎無法得到它的工作。與JS/JQ的經驗非常少。

$('#icon').on('click', function(e){ 
    $(this).parent() 
     .toggleClass('contact') 
     .toggleClass('contactexpand'); 
}); 

$('body').on('click', function(e){ 
    $('#ccontainer') 
     .removeClass('contactexpand') 
     .addClass('contact'); 
}); 

$('#ccontainer').on('click', function(e){ 
    e.stopPropagation(); 
}); 

回答

2

你必須調用event.stopPropagation從點擊處理程序,以防止它「沸騰」起來DOM(即,防止它激活所有祖先元素上的點擊事件)。

  $(document).ready(function(){ 
      $('#icon, ul li').on('click', function(event){ 
       event.stopPropagation(); 
       $('#icon').parent() 
       .toggleClass('contact') 
       .toggleClass('contactexpand');    
      }); 
      $('body').on('click', function(e){ 

       $('#ccontainer') 
       .removeClass('contactexpand') 
       .addClass('contact'); 
      }); 
     }); 
+0

不工作,嘗試了已經.. – JanBo 2013-03-23 19:25:21

+0

OK,讓我看看。 – orb 2013-03-23 19:33:34

+0

這是:-)更妙重新發布後出現錯字。讓人驚訝。我現在測試了它,現在我回到了我的電腦。 。 。請注意,你如何使用任何(或至少幾乎所有的)有效的CSS選擇器作爲一個jQuery函數調用的參數。 – orb 2013-03-23 19:54:31

0

更改JS來:

$('#icon, #ul > li').on('click', function(e){ 
    $("#ccontainer") 
     or $(this).parent() *not entirely sure what you wanted to get* 
    .toggleClass('contact') 
    .toggleClass('contactexpand'); 
}); 



$('body:not(#icon, #ul > li)').on('click', function(e){ 
    $('#ccontainer') 
    .removeClass('contactexpand') 
    .addClass('contact'); 
}); 


$('#ccontainer').on('click', function(e){ 
    e.stopPropagation(); 
}); 

#ul > li是指所有#item(number)小號

+0

不工作試過它已經... :(這似乎認爲在#item點擊也對身體點擊犯規打開它......僅僅指剛觸發了一下...... – JanBo 2013-03-23 19:26:47

+0

改變了網頁,可能你重新檢查? – aNewStart847 2013-03-23 19:39:20

+0

還是不工作...答案上面從我的評論小幅調整做它完美。還是要謝謝你。 – JanBo 2013-03-23 20:27:32