2013-11-15 41 views
1

我有以下的html:JQuery .not(find())或 - 是否可以使用?

<div class="profileRowHeader"><!-- div 1 --> 
    <div class="folderIcon"> 
     <i class="glyphicon glyphicon-arrow-close"></i> 
    </div> 
</div> 

<div class="profileRowHeader"><!-- div 2 --> 
    <div class="folderIcon"> 
     <i class="glyphicon glyphicon-folder-open"></i> 
    </div> 
</div> 

<div class="profileRowHeader"><!-- div 3 --> 
    <div class="folderIcon"> 
     <i class="glyphicon glyphicon-folder-close"></i> 
    </div> 
</div> 

當我點擊元素與.profileRowHeader類,它的一些東西,並從關閉改變圖標的​​文件夾打開。如同上面的中間div。

$this.find(".folderIcon").toggleClass('glyphicon-folder-open glyphicon-folder-close'); 

很好用。現在,如果我點擊上面的div 3,div 2仍然有圖標文件夾打開,所以爲了解決這個問題,我點擊任何profileHeaderRow時關閉所有文件夾圖標。

$(".folderIcon").removeClass('glyphicon-folder-open').addClass('glyphicon-folder-close'); 

問題當然是,我使用toggleClass,所以DIV我點擊我會去封閉內的圖標,然後將切換本身再次打開。

因此,我可以以某種方式找到我點擊的div內的類folderIcon,而不是將類更改應用到它。希望這是有道理的。

這就是我想,但根本不起作用:

$(".folderIcon").not(find(".folderIcon")).removeClass('glyphicon-folder-open').removeClass('greenDragBg').addClass('glyphicon-folder-close'); 

的完整代碼,因爲它是:

$('.profileRowHeader').click(function() { 

     $(".folderIcon").not(find(".folderIcon")).removeClass('glyphicon-folder-open').addClass('glyphicon-folder-close'); 

     $this.find(".folderIcon").toggleClass('glyphicon-folder-open glyphicon-folder-close'); 

    }); 

摘要:我有profileRowHeader類的div x個在每個文件夾中都有一個文件夾圖標,全部關閉......當我點擊任何類profileRowHeader的div時,我希望該圖標變爲打開狀態,其餘都關閉。當我再次點擊該div時,它會變爲關閉圖標。但是,如果它保持打開狀態並單擊另一個div,它應該關閉打開的一個,並且新的profileRowHeader內的新文件夾圖標變爲打開。

希望這是一個有點清晰

+0

您可以將您的確切需求添加到您的OP中。真的不清楚你點擊某件物品時會發生什麼。 –

+0

當JS在'.folderIcon'上切換它們時,你的JS切換''上的類,'$ this'也沒有被定義。我認爲這是一個複製粘貼錯誤。 '=]' –

+0

@FabrícioMatté它的定義我只是忘了在這裏添加,當我拿了一堆其他的東西出來保存讀取無用的信息 - 謝謝 –

回答

2

這是你怎麼能點擊的元素中find元素:

$(".folderIcon").not($(this).find(".folderIcon")) //... 

或者稍短的版本選擇設置context

$(".folderIcon").not($(".folderIcon", this)) //... 
+0

就是這樣!我是在正確的線條只是語法錯誤,真棒謝謝! –

0
$('.profileRowHeader').click(function() { 
    // reset state of all icons back to closed 
    $('.glyphicon').removeClass('glyphicon-folder-open').addClass('glyphicon-folder-close');  

    $('.glyphicon').find(':first').toggleClass('glyphicon-folder-close glyphicon-folder-open'); 
}); 
相關問題