2013-07-03 138 views
0

我很困惑。我在.title上實現了一個click()函數來切換其兄弟(表)是否顯示或隱藏。這工作正常。我的問題是,我在標籤上有另一個點擊功能.title。當我點擊一個標籤時,我想讓表格打開,但是.title覆蓋了它,並關閉它並將所有東西混淆。目前,我在一個標籤上有一個onClick()(它仍然不起作用),它是通過jQuery .click()完成的,但我無法正確地完成它。jQuery .click()覆蓋標籤

<script> 
function dateChange(boatInput, dateInput){ 

     $("table").first().children().remove(); 
     $("table").first().load("availability.asp?boatType="+ boatInput +"&date="+ dateInput +""); 
} 
$(document).ready(function() { 
    $("table").first().load("availability.asp?boatType=PowerCatamaran&date=currentDate", function(response, status, xhr){ 
     if (status == "error") { 
      var msg = "Sorry but there was an error: "; 
      $("table").html(msg + xhr.status + " " + xhr.statusText); 
     } 
    }); 


    $(".title").click(function(){ 
     $(this).next().toggleClass("hide"); 
     var boatName = $(this).next().attr('id'); 
     if(!$(this).next().hasClass('hide')){ 
      if(boatName == "SailingCatamaran"){ 
       $(this).next().load("#"); 
      } 
      else if(boatName == "PowerCatamaran"){ 
       $(this).next().load("#"); 
      } 
      else{ 
       $(this).next().load("#"); 
      } 
     } 
     $(this).children().last().toggleClass("hide"); 
     $(this).find('.dateSelect').toggleClass("hide"); 

    }); 
}); 
</script> 

<div class="title"> 
     <h2>Catamarans</h2> 
     <div class="dateSelect"> 
      <div class="prev"> 
       <p>Prev</p> 
       <a href="#">< month</a> 
       <a href="#">< week</a> 
       <a href="#">< day</a> 
      </div> 

      <div class="next"> 
       <p>Next</p> 
       <a href="#" onClick="dateChange('PowerCatamaran', 'nextMonth')">month ></a> 
       <a href="#">week ></a> 
       <a href="#">day ></a> 
      </div> 
     </div> 
     <div class="expand hide"> 
      Click to Expand 
     </div> 
    </div> 

到目前爲止,代碼是靜態的。在完全動態化之前,我只需要一些實際的功能。我提前爲可怕的代碼道歉!

回答

2

您需要防止從內部事件的點擊eveht的傳播通過調用event.stopPropagation()

$('<tag-selector>').click(function(event){ 
    //do your stuff 
    event.stopPropagation() 
}); 
+0

@AkiraDawson沒有,裏面的一個。你可以分享標籤點擊事件代碼 –

+0

聖誕節它的工作!你是個天才!!!! –

+0

如果你曾經擊中過澳元,我會給你買一瓶該死的啤酒。 –

0

我有點對CSS和jQuery選擇生疏,但我認爲一旦你標記了一個元素類,它也適用於所有孩子的元素。

因此,標記爲.title的div中的a,p等也會繼承類.title。

如果你不想這樣做,我會建議更具體的jQuery選擇器用於選擇哪些元素得到.click()處理程序。

也許:

$(".title > table").click(function(){...}) 

從jQuery的"Child Selector"這說給處理程序適用於在課堂上有一個父元素中的所有表元素.title僞

+0

是的,我不確定它是否適用於jQuery的特殊性,再次,仍然是一個新的jQuery。但是,我發現event.propagation()非常出色,謝謝你的回覆!肯定會在未來使用! –