【问题标题】:jQuery alternative to selecting an element by chaining querySelector [duplicate]通过链接querySelector来选择元素的jQuery替代方法[重复]
【发布时间】:2026-02-24 12:50:02
【问题描述】:

给定以下 html:

<div class="container">
    <form class="form" id="login">
        <h1 class="form__title">Login</h1>
        <div class="form__message form__message-error"></div>
    </form>
</div>

有没有一种简单的方法来引用“form__message”类的元素?我知道这是这个例子中这个类的唯一元素,但可能还有更多。所以我尝试以下方法来删除 form__message-error CSS-properties:

 $("#login .form__message").classList.add("form__message--error");

然而,这并没有找到正确的元素,而以下工作:

document.querySelector("#login").querySelector(".form__message").classList.remove("form__message--error");

我正在寻找最后一条语句的 jQuery 替代方案。

【问题讨论】:

  • $("#login .form__message").classList.add("form__message--error"); 不是 jQuery - 你想要 $("#login .form__message").addClass("form__message--error");$("#login .form__message").removeClass("form__message--error");$("#login .form__message").toggleClass("form__message--error");
  • 嘿,试试这样的 $(".form__message","#login").removeClass("form__message--error")
  • 为什么.classList.add()删除一个类?
  • $('#login').find('.form__message').first().removeClass('form__message--error'); 如果你想要完全等价的。
  • 要么使用 jQuery addClass 方法($("#login .form__message").addClass("form__message--error"); [或 .removeClass])或 DOM 的 classListdocument.querySelector("#login .form__message").classList.add("form__message--error").classList.add("form__message--error"); [或 .remove])。请注意,后者(以及您的问题)假设选择器只有一个匹配项。如果可能不止一个,要得到与jQuery代码相同的效果,你需要querySelectorAll和一个循环。

标签: javascript jquery dom


【解决方案1】:

您正在混合使用 jQuery 和 DOM 方法。 .classList.add() 的 jQuery 等效项是 .addClass()

$("#login .form__message").addClass("form__message--error");

你不需要.find()querySelector(),你可以使用与jQuery相同的选择器:

document.querySelector("#login .form__message").classList.add("form__message--error");

【讨论】:

  • 整天都是打字错误。已经在 cmets 中回答了好几次
  • 问题中没有拼写错误 - OP 正在寻找他们不知道存在的东西:.addClass / .removeClass。
  • 无论如何都是重复的......
  • ^^ 看看所有有钱的人,争论为什么应该关闭这个问题。 - 但是,是的,这个问题充其量是重复的。
  • @freedomn-m "typo-type" 因为缺少“您使用了错误或不存在的方法,我将在您的问题下方的评论中解释,以便您将其删除”