首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >addClass removeClass bugs jQuery

addClass removeClass bugs jQuery
EN

Stack Overflow用户
提问于 2012-04-19 18:44:44
回答 4查看 252关注 0票数 0

我正在尝试写一个jQuery代码,简单地切换类点击,所以我有两个元素,一个类视频-离开另一个视频中间,点击他们切换类,这是在火灾错误的类切换以及它们的位置(这是与类相关的),但当我第二次点击jQuery行为,就好像类没有改变...下面是代码:

代码语言:javascript
复制
$('.video-left').click(function(){
   $('.video-middle').addClass('video-left');
   $('.video-middle').removeClass('video-middle');
   $(this).addClass('video-middle');
   $(this).removeClass('video-left');
});
$('.video-middle').click(function(){alert('middle');});

因此,如果我先单击left,然后再单击现在剩下的内容,则会触发警报。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-19 18:48:47

当您执行诸如$( '.video-left' ).click()之类的操作时,单击事件被附加到元素,而不是类。也就是说,如果元素的类发生更改,则click事件不会更改,因为该事件是附加到元素本身的。

在这种情况下,当您想要将事件附加到一个类时,您应该使用.on(),它在用户每次单击元素时都会单独选中选择器。

代码语言:javascript
复制
$( document ).on( 'click', '.video-left', function(e) {
   // ...
});

(您还可以使用视频元素的任何父元素,而不是document,前提是它们在任何时候都不会更改。)

票数 4
EN

Stack Overflow用户

发布于 2012-04-19 18:49:38

你做错了吗?

您所要做的是将事件附加到元素,而不是像您想象的那样将元素附加到类

每次单击该元素时,都会执行.video-left驻留在first click()中的函数。一样的

你应该做的是将类"video“添加到所有元素中,并附加公共事件

代码语言:javascript
复制
$('.video').click(function(){
if($(this).hasClass('.video-left')) {do_something1();return} 
if($(this).hasClass('.video-middle')) {do_something2();return}
})
票数 0
EN

Stack Overflow用户

发布于 2012-04-19 18:51:54

将类video-left添加到两个元素中,并将类“video-middle”(连同“video-left”一起添加到您希望“video-middle”默认设置的元素中。

代码语言:javascript
复制
<div class='video-left'></div>
<div class='video-left video-middle'></div> <!--default video middle -->

然后

代码语言:javascript
复制
$('.video-left').click(function(){
    $('.video-middle').removeClass('video-middle');
    $(this).addClass('video-middle');
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10226392

复制
相关文章

相似问题

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