2013-01-02 28 views
0

我正在使用Jquery的iTunes風格封面流程。我不經常使用Jquery框架。我不想使用插件,他們中的大多數看起來像我想要的矯枉過正。 http://jsfiddle.net/zorikii/cL63y/可以直接將Class添加到容器中的img標籤嗎?

目前,我只是試圖從img元素中刪除活動標籤。

$(".imgFrame img").removeClass(function(index, currentClass) { 
    var removedClass; 
    if (currentClass === "active") { 
     removedClass= "active"; 
    } 
    return removedClass; 
}); 

的類被聲明如下:

.imgFrame 
.imgFrame > img 
.imgFrame.active > img 

編輯:HTML:

<div class="imgFrame active"> 
    <img src="http://placehold.it/50x75"/> 
</div> 
<div class="imgFrame"> 
    <img src="http://placehold.it/50x75"/> 
</div> 

我有一種感覺$(".imgFrame img")是不是我所期待的,但我看到的Jquery在不同的環境下,這樣的對象就像這樣。

+0

請勿使用removeClass()或addClass()作爲自定義名稱函數! –

+1

在現代瀏覽器中也有.classList,這是一個原生的JavaScript接口,不需要jQuery。 – philipp

+1

問題是...你希望從div中刪除類而不是img ...但是在代碼中,你試圖從img中刪除類而不是div –

回答

3

所有你需要的是$('.imgFrame').addClass('active');$('.imgFrame.active').removeClass('active');添加&刪除這些類。但是,如果你想要做一些更深入的象檢查,如果下一個()項要素是提供給addClass你可以做這樣的事情:

$('#btnNext').on('click', function() { 
    var $curImg = $('.imgFrame.active'), 
     $nextImg = $curImg.next(); 
    if ($nextImg.length) { 
     $nextImg.addClass('active'); 
    } else { 
     $('.imgFrame').first().addClass('active'); 
    } 
    $curImg.removeClass('active'); 
}); 

這裏有一個jsFiddle例如從你的小提琴代碼。

+0

並感謝'&text ='。我不知道有什麼地方接受了後期變量。 – smulholland2

2

如果你只希望從img元素刪除類active你可以簡單的代碼到這一點:

$('.imgFrame img').removeClass('active'); 

在你傳遞給該方法的功能檢查是多餘的,因爲jQuery也該內部無論如何。

爲了幫助改進您使用的選擇器,我需要查看您的HTML代碼。

+0

我在開始時也試過這種方法,它沒有工作。在某些時候,我需要將活動類應用到組中的下一個或上一個.imgFrame,以便切換到更復雜的功能。我會將我的HTML添加到OP。 – smulholland2

+1

您擁有的當前功能與我發佈的代碼具有完全相同的功能。如果您看到不同之處,請編輯您的原始問題以包含所有相關的JavaScript和HTML代碼。 –

+0

不,你是對的。我的功能和腳本具有相同的功能。抱歉。我的意思是我會在稍後添加更多內容。現在我只是想讓removeClass實際移除一個類。一旦我達到那一點,我會將活動類添加到其他imgFrame div之一。 – smulholland2

相關問題