Javascript 在按钮集中删除和添加类

Javascript 在按钮集中删除和添加类,javascript,jquery,Javascript,Jquery,我有这套按钮: <div class="test-button-set"> <button id="hdfs_test" class="btn btn-default btn-lg">HDFS</button> <button id="hive_test" class="btn btn-default btn-lg">HIVE</button> <button id="hdfs_hive_test" class="bt

我有这套按钮:

<div class="test-button-set">
  <button id="hdfs_test" class="btn btn-default btn-lg">HDFS</button>
  <button id="hive_test" class="btn btn-default btn-lg">HIVE</button>
  <button id="hdfs_hive_test" class="btn btn-default btn-lg">BOTH</button>
</div>
您的代码可以是:

$( '.test-button-set button' ).click(function() {
    $( '.test-button-set button' ).removeClass("selected");
    $( this ).addClass("selected");
});
您的代码可以是:

$( '.test-button-set button' ).click(function() {
    $( '.test-button-set button' ).removeClass("selected");
    $( this ).addClass("selected");
});

接近。您正在尝试对原始DOM对象使用jQuery方法。先把它们包装起来:

testButtonSet.forEach($(this).click(function() {
    $(testButtonSet).removeClass("selected");
    $(this).addClass("selected");
}));
或者,要使用完整的jQuery:

var testButtons = $('.test-button-set button');

testButtons.click( function() {
  testButtons.removeClass('selected');
  $(this).addClass('selected'); 
});
例如:

var testButtons=$('.test button set button');
testButtons.单击(函数(){
testButtons.removeClass('selected');
$(this.addClass('selected');
});
。已选定{
颜色:红色;
}

HDFS
蜂箱
二者都

关闭。您正在尝试对原始DOM对象使用jQuery方法。先把它们包装起来:

testButtonSet.forEach($(this).click(function() {
    $(testButtonSet).removeClass("selected");
    $(this).addClass("selected");
}));
或者,要使用完整的jQuery:

var testButtons = $('.test-button-set button');

testButtons.click( function() {
  testButtons.removeClass('selected');
  $(this).addClass('selected'); 
});
例如:

var testButtons=$('.test button set button');
testButtons.单击(函数(){
testButtons.removeClass('selected');
$(this.addClass('selected');
});
。已选定{
颜色:红色;
}

HDFS
蜂箱
二者都

纯jQuery方式是:

$('.test-button-set button').click(function() {
    var $this = $(this);
    $this.siblings().removeClass("selected");
    $this.addClass("selected");
});

纯jQuery的方式是:

$('.test-button-set button').click(function() {
    var $this = $(this);
    $this.siblings().removeClass("selected");
    $this.addClass("selected");
});

首先,foreach函数接收一个函数作为第一个参数,而不是像这样使用它:

testButtonSet.forEach($(this).click(function() {
    testButtonSet.removeClass("selected");
    this.addClass("selected");
})); 
testButtonSet.forEach(function(element, index, array){
    $(element).click(function() {
        testButtonSet.removeClass("selected");
        this.addClass("selected");
    })
); 
应该这样使用:

testButtonSet.forEach($(this).click(function() {
    testButtonSet.removeClass("selected");
    this.addClass("selected");
})); 
testButtonSet.forEach(function(element, index, array){
    $(element).click(function() {
        testButtonSet.removeClass("selected");
        this.addClass("selected");
    })
); 
但是,foreach方法使用数组而不是dom元素。

幸运的是,我们有几件事要解决

一种是“去甲基化”,如下所示:

var each = Function.prototype.call.bind([].forEach);

另一种方法是使用jquery“each”方法,即

$.each(array, function(){});

也就是说,现在您可以在使用jquery或本机去模板化版本之间进行选择

each(testButtonSet, function(element, index, array){
    $(element).click(function() {
        testButtonSet.removeClass("selected");
        this.addClass("selected");
    });
}); 

$(testButtonSet).each(function(index, element){
    $(element).click(function() {
        testButtonSet.removeClass("selected");
        this.addClass("selected");
    });
}); 
小提琴: forEach:
Jquery:

首先,foreach函数接收一个函数作为第一个参数,而不是像这样使用它:

testButtonSet.forEach($(this).click(function() {
    testButtonSet.removeClass("selected");
    this.addClass("selected");
})); 
testButtonSet.forEach(function(element, index, array){
    $(element).click(function() {
        testButtonSet.removeClass("selected");
        this.addClass("selected");
    })
); 
应该这样使用:

testButtonSet.forEach($(this).click(function() {
    testButtonSet.removeClass("selected");
    this.addClass("selected");
})); 
testButtonSet.forEach(function(element, index, array){
    $(element).click(function() {
        testButtonSet.removeClass("selected");
        this.addClass("selected");
    })
); 
但是,foreach方法使用数组而不是dom元素。

幸运的是,我们有几件事要解决

一种是“去甲基化”,如下所示:

var each = Function.prototype.call.bind([].forEach);

另一种方法是使用jquery“each”方法,即

$.each(array, function(){});

也就是说,现在您可以在使用jquery或本机去模板化版本之间进行选择

each(testButtonSet, function(element, index, array){
    $(element).click(function() {
        testButtonSet.removeClass("selected");
        this.addClass("selected");
    });
}); 

$(testButtonSet).each(function(index, element){
    $(element).click(function() {
        testButtonSet.removeClass("selected");
        this.addClass("selected");
    });
}); 
小提琴: forEach: Jquery: