【问题标题】:Filter jQuery object by class AND no tags按类过滤 jQuery 对象并且没有标签
【发布时间】:2021-10-13 14:40:08
【问题描述】:

使用以下代码:

// Get the highlighted content
let $content = $(editor.selection.getContent());

我得到了当前在 TinyMCE 中突出显示的内容。当我在控制台窗口中打印出$content 的值时,我得到以下信息:

$content
jQuery.fn.init(5)
    0: span.element.text-element
    1: text
    2: span.element.text-element
    3: text
    4: span.element.text-element
    length: 5

我要做的是验证所有对象是.text-element 类型还是文本类型。所以我正在执行以下$content.filter('.text-element').length 并将其与$content.length 进行比较。如果它们相等,我的对象是好的。但当然,仅过滤 '.text-element' 只会给我 3 个元素。

我也试过$content.filter('.text-element,:not([class]').length,但还是不行。

如何在没有类的情况下返回所有 '.text-element's 和元素?

我将添加一个 TinyMCE 标记。

【问题讨论】:

  • 我对您使用什么选择器返回 jQuery 对象中的文本节点感兴趣?
  • 我正在与 TinyMCE 合作,当我执行 $(editor.selection.getContent()) 时,这就是我得到的结果。 editor 是对 TinyMCE 编辑器的引用。
  • 我试试看。

标签: javascript jquery tinymce-4


【解决方案1】:

您可以通过将函数传递给filter() 来实现您的目标。该函数可以检查元素是否存在,或者检查元素的nodeType:

let $filtered = $foo.filter((i, el) => el.classList.contains('text-element') || el.nodeType == Node.TEXT_NODE);

【讨论】:

  • 我收到了classListnodeTypeis not a function at HTMLSpanElement.eval 错误
  • 您能否编辑问题以包含一个工作示例。
  • 这个答案让我走上了正轨。谢谢。
猜你喜欢
  • 1970-01-01
  • 2012-11-28
  • 2019-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多