如何选择包含类名实例的链接

How to select a link that contains an instance of a class name?

本文关键字:实例 链接 包含类 何选择 选择      更新时间:2023-09-26

现在我的页面的源代码具有以下结构:

<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");

其中最大的困难之一是,另一个链接有两个类:"隐藏"answers"取消包列表"。我想我会知道如何在一个班上做到这一点,但游戏在两个班上都会改变。

提前感谢!

编辑:答案太多了。他们也都工作!非常感谢各位。

我的解决方案将使用toggleClass():

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

use.siblings((:

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

您可以使用.siblings((,它要么返回DOM中的所有同级,要么接受jQuery过滤器。

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

只需将此代码添加到链接的click((处理程序中即可。

您的第三行是错的。尝试:

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

如果"Restore"链接总是在"[X]"链接之前,则可以使用prev方法。

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

hasClass((仅告诉元素是否公开类。它返回一个布尔值,而不是jQuery对象,因此您无法将其链接。

您正在寻找类选择器:

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

也就是说,在您的情况中经常使用的模式是首先通过匹配暴露hidden类的元素来移除它,然后将它添加到您选择的元素中:

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

(以上假设您的标记可能比问题中的示例更复杂,因此它避免使用siblings((来匹配其他锚点元素。(