使用jquery addclass和removeclass

时间:2013-02-25 08:47:47

标签: jquery

我正在制作一个灯箱代码,要求我使用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" : "")

2 个答案:

答案 0 :(得分: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');
}

或者,如果您需要删除课程的按钮不在列表中,则最后一行将是:

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

首先检查是否存在btnPlayOn类,如评论中所述,使用:

if (this.list.find('.btnPlayOn').length > 0) {
    c('.btnToRemoveClassFrom').removeClass('classToRemove');
}
顺便说一下,为什么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');
    }
}

答案 1 :(得分: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" : "");