Javascript 更改以前单击的元素的颜色

Javascript 更改以前单击的元素的颜色,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个元素列表,在用户单击一个按钮(然后单击另一个按钮)后,我想更改这些元素的颜色。我知道要在单击时更改按钮颜色,我会使用onclick,但单击后如何更改按钮的颜色 例如,用户单击泰坦尼克号。什么也没发生。然后用户点击泰坦尼克号7,泰坦尼克号改变颜色并保持该颜色。然后用户单击Titanic9。泰坦尼克号和泰坦尼克7号都有“参观”的颜色 参见JSFIDLE如果我理解正确,我会这样做: css 或者双击 $(function(){ $( "a" ).each(function() { var

我有一个元素列表,在用户单击一个按钮(然后单击另一个按钮)后,我想更改这些元素的颜色。我知道要在单击时更改按钮颜色,我会使用
onclick
,但单击后如何更改按钮的颜色

例如,用户单击泰坦尼克号。什么也没发生。然后用户点击泰坦尼克号7,泰坦尼克号改变颜色并保持该颜色。然后用户单击Titanic9。泰坦尼克号和泰坦尼克7号都有“参观”的颜色


参见JSFIDLE

如果我理解正确,我会这样做:

css

或者双击

$(function(){
$( "a" ).each(function() {
  var count = 0;   
  $( "a" ).click(function() {
        count++;
        //$( this ).text( "clicks: " + count );
        $( this ).toggleClass( "color", count % 3 === 0 );
    });
});
});  

鉴于您已经在使用
数据-
,我将执行以下操作:

$(function() {
    var currentButton;
    $('a.song').on('click',function() {
        if(currentButton === this) return;
        currentButton = this;
        $('a.song').each(function() {
          if($(this).data('visited') == 'true' && !$(this).hasClass('visited'))
              $(this).addClass('visited');
        });
       $(this).data('visited','true');
    });
});
  • 访问
    数据
    ,跟踪单击的按钮
  • 每次单击按钮时,检查它是否与以前单击的按钮相同。如果没有,请更改以前单击的按钮的背景,并将当前按钮设置为已访问
  • 小提琴示例:

    .color{
        background: yellow;
      }
    
    $(function(){
    $( "a" ).each(function() {
      var count = 0;   
      $( "a" ).click(function() {
            count++;
            //$( this ).text( "clicks: " + count );
            $( this ).toggleClass( "color", count % 3 === 0 );
        });
    });
    });  
    
    $(function() {
        var currentButton;
        $('a.song').on('click',function() {
            if(currentButton === this) return;
            currentButton = this;
            $('a.song').each(function() {
              if($(this).data('visited') == 'true' && !$(this).hasClass('visited'))
                  $(this).addClass('visited');
            });
           $(this).data('visited','true');
        });
    });