首页 > 解决方案 > 未捕获的类型错误:e.nextElementSibling.fadeToggle 不是函数

问题描述

我有错误:

Uncaught TypeError: e.nextElementSibling.fadeToggle is not a function
at HTMLSpanElement.e.addEventListener

奇怪的是,当我将:更改el.nextElementSibling.fadeToggle()为:el.nextElementSibling.remove()- 一切正常。有任何想法吗?

$(function () {

    const spans = $('span');
    const lists = $('ul')
    const newArr = [];

    for (x of spans) {
        newArr.push(x);
    }

    newArr.forEach(fn)

    function fn(el) {
        el.addEventListener('click', () => el.nextElementSibling.fadeToggle();
        )
    }

})

标签: javascriptaddeventlistener

解决方案


fadeToogle可能是 jQuery 方法,nextElementSibling而是常规 DOM 元素。

您必须将其包装在 jQuery 中才能使用 jQuery 方法,如

$(el.nextElementSibling).fadeToggle()

真正的问题是你为什么要这样做,什么时候可以这样做

$(function() {
    $('span').on('click', function() {
        $(this).next().fadeToggle();
    });
});

之所以remove()有效,是因为 jQuery 版本和本机版本的工作方式相同,因此对于常规 DOM 元素,您调用的是 native remove(),而不是 jQuery 的版本。


推荐阅读