2013-03-13 96 views
1

我正在嘗試使用jQuery的click函數將懸停狀態應用於選定的div,而不區分JavaScript中的div。我目前使用:jQuery單擊函數影響多個div

$(document).ready(function(){ 
    $(".project").click(function() { 
      $("a.expand").removeClass("hovered"); 
      $("a.expand").addClass("hovered"); 
      $(".project_full").hide(); 
      var selected_tab = $(this).find("a").attr("href"); 
      $(selected_tab).fadeIn(); 
      return false; 
     }); 

隨着HTML:

<div class="project first project_gizmoscoop"> 
    <div class="title"> 
    GizmoScoop!      
    <div class="date">2012</div> 
    </div> 
    <a class="expand" title="(Caption)" href="#project_1">GizmoScoop!</a> 
</div> 
<div class="project project_sc"> 
    <div class="title"> 
    Striking Code     
    <div class="date">2011</div> 
    </div> 
    <a class="expand" title="(Caption)" href="#project_2">Striking Code</a> 
</div> 

的.hovered類用於被點擊鏈接(從外部CSS文件中的特定樣式)。但是,一切都在被選中。 (例如,參見http://www.codeisdna.com)。

我知道我做錯了什麼(我應該指定個人ID或使用HTML5數據屬性),但我被卡住不必要的。我現在感覺像一個完整的新手,我不能做這麼簡單的事情(儘管我做了更先進的事情)。

+0

你都將在你的示例代碼刪除同一類(.hovered),順便說一句。 – isherwood 2013-03-13 19:04:36

回答

3

你只需要利用jQuery的靈活性(和良好的編程習慣)並相應地縮小你的範圍。你已經在做與你的變量定義類似的東西了。例如,目標只有那些a.expand元素被點擊那個的.project實例裏面:

$(".project").click(function() { 
    $(this).find("a.expand").removeClass("hovered"); 
    ... 
}); 
+0

你是對的!我將$(this)應用於添加類的操作(保持.removeClass原樣),並且一切正常。我知道這是一件小事,但我無法想到這一點!謝謝! – jdaio 2013-03-13 19:25:47

0
$(".expand").click(function() { 
     $(this).addClass("hovered"); 
     .. 
    }); 
+0

該代碼對我來說效果不佳!它單獨應用,但是依照isherwood的示例爲我提供了一種更簡潔的方式來禁用點擊(並保持標籤完好無損)。 – jdaio 2013-03-13 19:24:24