【问题标题】:"is not a function" jQuery“不是函数”jQuery
【发布时间】:2020-06-03 20:13:31
【问题描述】:

我对 jQuery 有一点问题。我只想在我的“li”上删除和添加类,但它对我说“不是函数”。这是我的代码:

$(document).ready(function (){
    var title = $('title')
    var nav = $('.nav-a')

    for ($i = 0 ; $i<nav.length ; $i++)
    {
       if (title[0].text === nav[$i].text){
        var newTitle = title[0].text
        var newNav = nav[$i].text
        var navI = nav[$i].parentElement
        console.log(newTitle)
        console.log(newNav)
        console.log(navI)

        nav.parent().removeClass('menu-active')
        navI.addClass('menu-active')
       }
    }
  })

在控制台我有:Uncaught TypeError: navI.addClass is not a function

【问题讨论】:

  • navI 是 DOM 而不是 jQuery...您混合使用 jQuery 和 DOM 的某些原因。
  • 文本匹配也很糟糕。您应该有某种匹配属性来将元素相互匹配。现在,当您决定更改一个元素的文本时,它会破坏您的代码。

标签: javascript jquery typeerror


【解决方案1】:

问题是因为您在 jQuery 对象上调用本机 Element 对象方法,反之亦然。

用一个或另一个来修理这根棍子。因此,这是一个简化的 jQuery 示例,它使用 filter() 通过文本而不是显式循环来匹配元素。

jQuery(function($) {
  var title = $('title').text();
  var nav = $('.nav-a').filter(function() {
    return $(this).text().trim() === title;
  }).parent().addClass('menu-active'); 
})

【讨论】:

    猜你喜欢
    • 2018-10-01
    • 2016-11-01
    • 2014-03-26
    • 2020-10-15
    • 2016-12-16
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多