首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带有setTimeout的滑块- 'removeClass is not a function error‘

带有setTimeout的滑块- 'removeClass is not a function error‘
EN

Stack Overflow用户
提问于 2016-11-17 23:11:55
回答 3查看 73关注 0票数 0

所以我今天早些时候问了一个类似的问题,但我正在尝试对我已有的代码进行升级。我试图用setTimeout函数创建一个滑块,但我一直在我的jquery对象上得到removeClass is not a function error。这是一个包含代码的codepen

index.html

代码语言:javascript
复制
<div class=container>
  <img class='isActive' src="http://placehold.it/350x150">
  <img class='isHidden' src="http://placehold.it/350x150"> 
  <img class='isHidden' src="http://placehold.it/350x150"> 
  <img class='isHidden'src="http://placehold.it/350x150">
</div>

index.scss

代码语言:javascript
复制
html {
  box-sizing: border-box;
}

*,
*:before,
*:after {
  box-sizing: inherit;
}

body {
  background: black;
}

.container {
 display: inline;
 //border: 1px solid white;
}

.slide {

}

.isActive {
  visibility: visible;  
}

.isHidden {
 visibility: hidden; 
}

index.js

代码语言:javascript
复制
$(function() {
  var timer;
  var $allImgItems = $('img');
  var $items = $('.container').find($allImgItems);

  for (let i = 0; i < $items.length; i++) {
     var $item = $items[i];
   $item.removeClass('isHidden').addClass('isActive')
                                          /*$item.removeClass('isHidden').addClass('isActive).setTimeout(function() { $( this ).animate( { scrollLeft: 200 + 'px' } ), '500', 'swing', function() { console.log('Animation completed') } }) */
    console.log(`We are at this item: ${$item}`);    
  }
}) 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-17 23:34:37

看看我是如何修改你的js函数的。现在似乎运行得很好。

代码语言:javascript
复制
$(function() {
  var timer;
  var $items = $('img', '.container');

  for (let i = 0; i < $items.length; i++) {
     var item = $items[i];
     $(item).removeClass('isHidden').addClass('isActive');
     console.log(`We are at this item: ${item}`);    
  }
})
代码语言:javascript
复制
html {
  box-sizing: border-box;
}

*,
*:before,
*:after {
  box-sizing: inherit;
}

body {
  background: black;
}

.container {
 display: inline;
 //border: 1px solid white;
}

.slide {
  
}

.isActive {
  visibility: visible;  
}

.isHidden {
 visibility: hidden; 
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class=container>
  <img class='isActive' src="http://placehold.it/350x150">
  <img class='isHidden' src="http://placehold.it/350x150"> 
  <img class='isHidden' src="http://placehold.it/350x150"> 
  <img class='isHidden'src="http://placehold.it/350x150">
</div>

票数 1
EN

Stack Overflow用户

发布于 2016-11-17 23:18:30

此处的jQuery选择器

代码语言:javascript
复制
var $items = $('.container').find($allImgItems);

返回元素数组,但这些元素本身不是jQuery对象。抓取元素后,将其包装在$()中以使其成为jQuery对象。

代码语言:javascript
复制
var $item = $($items[i]);
票数 0
EN

Stack Overflow用户

发布于 2016-11-17 23:19:26

当你这样做的时候

代码语言:javascript
复制
  var $items = $('.container').find($allImgItems);
  for (let i = 0; i < $items.length; i++) 
  {
     var $item = $items[i];

$item是一个html节点,而不是一个jquery对象,而.removeClass是一个jquery对象函数,所以您需要像这样修改它。

代码语言:javascript
复制
 $($item).removeClass('isHidden').addClass('isActive')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40658446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档