javascript - removeClass 不是 AngularJS 指令中的函数

标签 javascript angularjs

我是 AngularJS 中这个指令的新手,需要一些帮助才能让这个 javascript 函数工作。当我只是在 angular 指令之外使用纯 JavaScript 时没问题。但是现在我遇到了一些问题。

navigate 函数下没问题,我得到一个错误:

removeClass is not a function

它适用于 addClass 所以我不明白为什么 remove 在这里不起作用。

<ol class="content">
    <li>
        "{{ myData.quotes[0].quote }}"
        <br /> <div class="quoteLine"></div> <span class="boldText"> {{ myData.quotes[0].person }} </span>
    </li>

    <li>
        "{{ myData.quotes[1].quote }}"
        <br /> 
        <div class="quoteLine"></div> <span class="boldText"> {{ myData.quotes[1].person }} </span>
    </li>
</ol>
app.directive('myCarousel', function () {
    return {
        link: function ($scope, $element) {
            var next = $element.find('.next');
            var prev = $element.find('.prev');
            var items = $element.find('.content li');
            var counter = 0;
            var amount = items.length;
            var current = items[0];

            $element.addClass('active')

            function navigate (direction) {
                current.removeClass('current')
                counter = counter + direction

          if (direction === -1 && counter < 0) { 
            counter = amount - 1
          }

          if (direction === 1 && !items[counter]) { 
            counter = 0
          }

              current = items[counter]
              current.addClass('current')
            }

            // go to next quote
            next.on('click', function (ev) {
              navigate(1)
            })

            // go back to previous quote
            prev.on('click', function (ev) {
              navigate(-1)
            })

            navigate(0)
        }
    }
})

最佳答案

removeClass 方法是 jQuery 或 jQLite方法。需要包装原始元素:

var items = $element.find('.content li');
var counter = 0;
var amount = items.length;
var current = items[0];

$element.addClass('active')

function navigate (direction) {
    ̶c̶u̶r̶r̶e̶n̶t̶.̶r̶e̶m̶o̶v̶e̶C̶l̶a̶s̶s̶(̶'̶c̶u̶r̶r̶e̶n̶t̶'̶)̶
    //WRAP raw element
    var $current = angular.element(current);
    $current.removeClass('current')
    counter = counter + direction

有关详细信息,请参阅 AngularJS angular.element API Reference - jQLite .

关于javascript - removeClass 不是 AngularJS 指令中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50022865/

相关文章:

javascript - 它与 Javascript 不同,将 JSON 获取为 "text/html"和 "file"?

javascript - AngularJS ngmodel 绑定(bind)说明?

angularjs - 集成测试时在AngularJS中使用$injector(不使用ngMock)

javascript - 如何从父组件更改子组件的状态

javascript - 访问对象上具有默认值的字段时如何修复流程错误?

Javascript 比较 2 个不同格式的日期

javascript - Angular 链接函数范围未正确更新

javascript - 切换显示 :none and display:block with JavaScript?

angularjs - 应用程序的基础无法加载js和css文件

javascript - 从范围中删除项目时使用 AngularJS 的 ngAnimate