2013-02-25 117 views
-3

我正在制作一个灯箱代码,需要我使用jquery addClass,我也需要使用removeClass,但我无法做到这一点。我的代码是使用jquery addclass和removeclass

 var d = this.buttons; 
     if (c("body").find("#lightbox-buttons").length < 1) { 
      this.list = c(a.template || this.template).addClass(a.position || "top").prependTo(g.utility.find("> div")); 
      d = { 
       prev: this.list.find(".btnPrev").click(g.prev), 
       next: this.list.find(".btnNext").click(g.next), 
       play_fast: this.list.find(".btnFast").click(g.play_fast).addClass(g.player_fast.isActive ? "btnPlayOn" : "") 
      } 

像这条线我也需要使用removeClass从一个更多的按钮中删除一个类。

play_fast: this.list.find(".btnFast").click(g.play_fast).addClass(g.player_fast.isActive ? "btnPlayOn" : "")

+0

我认为任何人谁倒票应该ATLEAST说不出理由。我有一个问题,我认为我可以分享并获得一些帮助。但它倒退是解决方案,为什么人们会开始在堆栈上分享他们的问题? – 2013-02-25 08:51:11

+0

为什么不能在调用“addClass”之后添加“.removeClass('classToRemove')”? – 2013-02-25 08:51:42

+0

因为我试过它不工作,我也必须删除一些不同的按钮不是点击按钮 – 2013-02-25 08:52:11

回答

1

我想你想要的是这样的:

var d; 
if (c("body").find("#lightbox-buttons").length < 1) { 
    this.list = c(a.template || this.template).addClass(a.position || "top").prependTo(g.utility.find("> div")); 
    d = { 
     prev: this.list.find(".btnPrev").click(g.prev), 
     next: this.list.find(".btnNext").click(g.next), 
     play_fast: this.list.find(".btnFast").click(g.play_fast).addClass(g.player_fast.isActive ? "btnPlayOn" : "") 
    }; 
    //this assumes that the buttons you need to remove the class from all have the same class, in this example 'btnToRemoveClassFrom' 
    this.list.find('.btnToRemoveClassFrom').removeClass('classToRemove'); 
} 

或者如果按钮()你需要删除类fr OM不在列表中,最后一行是简单的:

c('.btnToRemoveClassFrom').removeClass('classToRemove'); 

要检查btnPlayOn类的存在,第一,如描述的意见,使用:

if (this.list.find('.btnPlayOn').length > 0) { 
    c('.btnToRemoveClassFrom').removeClass('classToRemove'); 
} 

BTW,为什么地球上的c被用作jQuery的简写变量?在很多情况下,将之外的东西变成有意义的,但至少选择$j或者其他的东西是有意义的。

编辑:我觉得这个版本是一个小更可读:

var d; 
if (c("body").find("#lightbox-buttons").length < 1) { 
    this.list = c(a.template || this.template).addClass(a.position || "top").prependTo(g.utility.find("> div")); 
    var btnFast = this.list.find(".btnFast"); 
    d = { 
     prev: this.list.find(".btnPrev").click(g.prev), 
     next: this.list.find(".btnNext").click(g.next), 
     play_fast: btnFast.click(g.play_fast) 
    }; 

    btnFast.addClass(g.player_fast.isActive ? "btnPlayOn" : ""); 
    //this assumes that the buttons you need to remove the class from all have the same class, in this example 'btnToRemoveClassFrom' 

    if (this.list.find('.btnPlayOn').length > 0) { 
     this.list.find('.btnToRemoveClassFrom').removeClass('classToRemove'); 
    } 
} 
+0

它尽快删除类当我打开灯箱,这不应该发生。它应该支持删除后,我点击一次播放按钮 – 2013-02-25 09:50:51

+0

也许你需要检查'g.player_fast.isActive'就像你在做addClass?例如'removeClass(g.player_fast.isActive?'classToRemove':'')'?不知道你使用的是什么灯箱插件很难知道。 – 2013-02-25 09:53:40

+0

早些时候你说过“我想让btnStop-active类立刻被删除,而不是点击按钮时”。现在我很困惑。 – 2013-02-25 09:56:57

0

尝试像

this.list.find(".btnFast").click(function() { 
    g.play_fast(); 
    $('#el_id_here').removeClass('class_name_to_remove'); 
}).addClass(g.player_fast.isActive ? "btnPlayOn" : ""); 

this.list.find(".btnFast").click(function() { 
    $('#el_id_here').removeClass('class_name_to_remove'); 
    g.play_fast(); 
}).addClass(g.player_fast.isActive ? "btnPlayOn" : ""); 
+0

不工作的朋友 – 2013-02-25 09:04:28

+0

removeClass()没有类名选择器应该删除所有的类。尝试一下,并检查与FireBug,以确保首先工作。 – 2013-02-25 09:07:50

+0

它给出了一个$错误 – 2013-02-25 09:10:02