2013-02-06 143 views
0

我有以下幾點:爲什麼removeClass在這種情況下不起作用?

JS:

$('.home-toggle').click(function() { 
    scroll(); 
    $('#content twelvecol > a').removeClass('selected-tile'); 
    $(this).addClass('selected-tile'); 
    $('.hidden').hide(); 
    $('.home-container').slideDown(); 
    }); 

    $('.why-toggle').click(function() { 
    scroll(); 
    $('#content twelvecol > a').removeClass('selected-tile'); 
    $(this).addClass('selected-tile'); 
    $('.hidden').hide(); 
    $('.why-container').slideDown(); 
    }); 

HTML:

<div id="content" class="container" style="display:none;"> 
    <div class="row"> 
    <div class="twelvecol"> 
     <a href="#" class="home-toggle tile first"> 
     <img class="tile-top" src="images/tile1.png" alt="" /> 
     <img class="tile-bottom" src="images/tile1h.png" alt="" /> 
     </a> 
     <a href="#" class="why-toggle tile"> 
     <img class="tile-top" src="images/tile2.png" alt="" /> 
     <img class="tile-bottom" src="images/tile2h.png" alt="" /> 
     </a> 
     <a href="#" class="solutions-toggle tile last"> 
     <img class="tile-top" src="images/tile3.png" alt="" /> 
     <img class="tile-bottom" src="images/tile3h.png" alt="" /> 
     </a> 

所以.selected-tile應該從其他.tile被刪除,一旦我點擊一個。

但由於某種原因,該課程仍然保留在其他瓷磚中。

可能是什麼問題?

+0

也許'scroll'會拋出異常? –

回答

7

你有一個錯誤在你選擇

$('#content twelvecol > a') 

應該

$('#content .twelvecol > a') 
//  ^dot 

因爲後者選擇是頂兒內的容器一類 twelvecol的,這是錨本身位於ID爲content的元素內。

+0

+1對於漂亮的捕獲 –

+0

其實它不會如果你運行它... – Ovilia

+0

+1的解釋! – Ovilia

1

您的代碼不正確。你錯過了twelvecol類的點。

修改以下部分,二者的點擊功能的:

$('#content .twelvecol > a').removeClass('selected-tile'); 
+0

應該注意的是_selector_中缺少點。 –

+0

是的,在選擇器中缺少'.'。所以,'removeClass'不起作用。 –

1

不僅點丟失,而且>丟失。它應該是:

$('#content > .row> .twelvecol > a'); 

>只適用於子元素,而不是孫子。

所以,如果您有:

<div id="a"> 
    <div class="b"> 
     <div class="c"> 
     </div> 
    </div> 
</div> 

$('#a > .c')將不參考預期股利。它應該是$('#a > .b > .c')$('#a > div > .c')

在此處查看演示:http://jsfiddle.net/S2JV3/1/

+0

編號'$('#content .twelvecol> a')'也可以工作(坦率地講更乾淨),因爲'.twelvecol'元素是'#content'的後代。爲什麼添加> .row - 它是多餘的噪音? –

+0

[更新的小提琴](http://jsfiddle.net/S2JV3/2/) –

+0

@AdamRackis我錯了。感謝那!我學到了一些新東西。 = D – Ovilia

相關問題