【问题标题】:The jQuery addClass function quits my scriptjQuery addClass 函数退出我的脚本
【发布时间】:2023-03-17 11:28:01
【问题描述】:

嗯,我有 this script 但它不起作用。

这就是这条线:document.getElementById('thetest').addClass('superspecial');

一旦应该添加类(但不是),整个脚本就会退出...... 有人知道为什么吗?

【问题讨论】:

  • 使用 jQuery 时,不要使用 document.getElementById()... 使用 jQuery 选择器...$('#thetest').addClass('superspecial');

标签: javascript jquery addclass quit


【解决方案1】:

应该是:

jQuery('#thetest').addClass('superspecial');

document.getElementById('thetest').className += ' superspecial';

document.getElementById 不返回 jQuery 元素。
这就是您收到 has no method 错误的原因。

【讨论】:

  • jQuery 的主要优点之一是允许您使用 CSS 选择器来获取对象,而不是 getElementById。请查看api.jquery.com/category/selectors 了解更多信息。
  • 好吧,当然,但是你不能把它们全部集中到一个选择器中,然后让 jQuery 找出为你使用的 getElement(s) 函数。如果要加载库,不妨利用它最擅长的东西。
  • @CrazyTrain 嘿嘿,我从来没有说过这是一个缺陷。我唯一的一点是,将后代选择器传递给 querySelectorAll 与在 jQuery 中的作用不同。
  • @CrazyTrain WTF!哈哈对不起,我不是故意自相矛盾的。我认为我选择的措辞不当。也许“不像你期望的那样工作”就是我的意思意思
  • @Ian:发生在我们最好的人身上。 :) 我确实认为在 querySelector/All 语法中添加一些用于建立子 DOM 上下文的伪选择器在某些情况下会有所帮助,尽管我认为它不应该是默认设置。
【解决方案2】:

我知道这是一个有点老的帖子了,但我自己遇到了它,我使用了一种以前没有命名的方法来解决它。

而不是使用

document.getElementById("name").className+='superspecial';

我用过

document.getElementById("name").classList.add('superspecial');

经过一些研究,这似乎是一种相当新的方法,除了最新版本之外,许多浏览器版本都不支持它。使用此功能的浏览器要求如下所述: https://www.w3schools.com/jsref/prop_element_classlist.asp

我不知道这两种解决方案之间的确切区别,但在我看来,获取 classList 并使用现有函数添加它是更好的选择。特别是因为 += 是一种相互添加事物的通用方法,它并不总是必须按照您期望的方式工作。

【讨论】:

  • 如果您有新问题,请点击 按钮提出问题。如果有助于提供上下文,请包含指向此问题的链接。 - From Review
  • 好点,我将删除问题部分,因为我觉得它不够有趣,无法发布单独的问题。对于访问此页面的人,我会将其余部分作为替代答案。谢谢@Nic3500
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-26
  • 1970-01-01
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
  • 2016-08-19
相关资源
最近更新 更多