2011-07-05 41 views
3

現在我的網頁源代碼的結構如下:如何選擇包含類名實例的鏈接?

<span id='648746' class='topic'>linkedin 
<a href='' class='hidden unblacklist' onclick='return false'>Restore</a> 
<a href='' class='blacklist' onclick='return false'>[X]</a> 
</span><br /> 

在頁面加載,文本鏈接「還原」是隱藏的。當用戶點擊鏈接時,我想將hidden類添加到剛剛單擊的鏈接,然後我想從<span></span>的另一個鏈接中刪除hidden類。我可以讓第一部分工作,但是我對第二部分有困難。這是我的嘗試:

$(this).addClass("hidden"); 
console.log($(this).closest("span")); 
$(this).closest("span").hasClass("unblacklist")[0].removeClass("hidden"); 

其中一個最大的困難就是另一個鏈接有兩個類:「hidden」和「unblacklist」。我想我會知道如何爲一堂課做到這一點,但遊戲改變了兩個班級。

在此先感謝!

編輯:很多答案。他們也都工作!非常感謝你們。

回答

2

我的解決方案將使用toggleClass()

$(this).parent().children().toggleClass('hidden'); 
0

您可以使用.siblings(),它可以返回DOM中的所有兄弟或接受jQuery過濾器。

$(this).addClass("hidden"); 
$(this).siblings('a.unblacklist').removeClass("hidden"); 

只需將此代碼添加到鏈接的click()處理函數即可。

0

你是第三行是錯誤的。嘗試:

$(this).closest("span").find(".unblacklist").removeClass("hidden"); 
0
$('a.blacklist').click(function(){ 
    $(this).addClass('hidden').siblings('a.unblacklist').removeClass('hidden'); 
    }); 
0

你可以使用prev方法,如果「恢復」鏈接將在「[X]」鏈接之前總會來。

$(this).addClass("hidden"); 
$(this).prev().removeClass("hidden"); 
1

使用.siblings():

$(this).addClass("hidden").siblings().removeClass("hidden"); 
0

hasClass()只有一個元素暴露了類講述。它返回一個布爾值,而不是一個jQuery對象,所以你不能鏈接它。

您正在尋找的class selector

$(this).closest("span").find(".unblacklist").removeClass("hidden"); 

這就是說,經常在你的情況下使用的模式是先刪除hidden類,通過匹配暴露它的元素,然後將其添加到你選擇的元素:

$(this).closest("span").find(".hidden").removeClass("hidden"); 
$(this).addClass("hidden"); 

(上面的假設你的標記可以比在你的問題的示例更復雜,所以它使用siblings()到另一錨元件匹配不聞不問)

相關問題