2016-08-17 110 views
0

问题:添加/删除jquery逻辑到按钮

2个div容器。第一个容器有2个按钮 - 单个&倍数。第二容器具有4个按钮 - 项目1,项目2,第3项,第4项

逻辑需要: 如果选择的按钮,我可以从第1项,第2项,项的按钮仅选择1 3或第4项。

如果按钮选择了多个,我可以选择多个项目。 1或2或3或4个项目。

所选项目将会有黑色按钮。没有选定的项目会有灰色。

以下是使用的JS的HTML &。但不知何故多逻辑不起作用。

HTML:

<div class="select-type"> 
    <a href="javascript:void(0);" class="single-type">single</a> 
    <a href="javascript:void(0);" class="multi-type">Multiple</a> 
</div> 
<div class="select-item"> 
    <a href="javascript:void(0);" class="btn">Item 1</a> 
    <a href="javascript:void(0);" class="btn">Item 2</a> 
    <a href="javascript:void(0);" class="btn">Item 3</a> 
    <a href="javascript:void(0);" class="btn">Item 4</a> 
</div> 

JS:

$('.select-type a').click(function(){ 
    $('.select-type a').removeClass('selected'); 
    $(this).addClass('selected'); 
    if($('.single-type').hasClass('selected')){ 
     $('.select-item a').removeClass('multiType'); 
     $('.select-item a').addClass('singleType'); 
     $('.select-item a.singleType').click(function(){ 
      $('.select-item a.singleType').addClass('type-deselected'); 
      $(this).removeClass('type-deselected'); 
     }); 
    } 
    else if($('.multi-type').hasClass('selected')){ 
     $('.select-item a').removeClass('singleType'); 
     $('.select-item a').addClass('multiType'); 
     $('.select-item a').removeClass('type-deselected'); 
     $('.select-itema.multiType').click(function(){ 
      $('.select-item a').addClass('type-deselected'); 
      $(this).removeClass('type-deselected'); 
      $(this).addClass('type-selected'); 
     }); 
    } 
}); 

回答

1

这会工作:

$('.select-type a').click(function() { 
 
    $('.select-type a').removeClass('selected'); 
 
    $('.select-item a').removeClass('type-selected').addClass('type-deselected'); 
 
    $(this).addClass('selected'); 
 
}); 
 

 
$('.select-item a').click(function() { 
 
    var $this = $(this); 
 
    var multipleAllowed = $('.select-type a.selected').hasClass('multi-type'); 
 
    var selectedCount = $('.select-item a.type-selected').length; 
 
    var selected = $this.hasClass('type-selected'); 
 
    if (selected) { 
 
    $this.removeClass('type-selected').addClass('type-deselected'); 
 
    } else { 
 
    if (selectedCount == 1 && !multipleAllowed) { 
 
     $('.select-item a').not($this).removeClass('type-selected').addClass('type-deselected'); 
 
     $this.removeClass('type-deselected').addClass('type-selected'); 
 
    } else { 
 
     $(this).addClass('type-selected').removeClass('type-deselected'); 
 
    } 
 
    } 
 
});
.select-item a, 
 
.select-item a.type-deselected, 
 
.select-type a { 
 
    background-color: grey; 
 
    color: #fff; 
 
} 
 

 
.select-item a.type-selected, 
 
.select-type a.selected { 
 
    background-color: black; 
 
    color: #fff; 
 
}
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet"/> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="select-type"> 
 
    <a href="#" class="single-type btn">single</a> 
 
    <a href="#" class="multi-type btn">Multiple</a> 
 
</div> 
 
<br> 
 
<div class="select-item"> 
 
    <a href="#" class="btn type-deselected">Item 1</a> 
 
    <a href="#" class="btn type-deselected">Item 2</a> 
 
    <a href="#" class="btn type-deselected">Item 3</a> 
 
    <a href="#" class="btn type-deselected">Item 4</a> 
 
</div>

+0

嗨..非常感谢您的帮助!它工作真棒..另一个问题..在单一类型,如果用户点击,将添加“项目选择”。其他按钮必须添加类名“item-deselected”。多种类型也是如此。 – TDG

+0

@TDG在上面看到我的更新。如果我正确理解你的评论,那应该让你分类。如果没有,让我知道 – DelightedD0D

+0

对不起老板..“选择类型”添加/删除选择是像上一个好。我必须添加“选择/取消选择”只为“选择项目” – TDG

0

$('.select-type a').click(function() { 
 
    $('.select-type a').removeClass('selected');//remove selected class on type click 
 
    $('.select-item a').removeClass('selected');//remove selected class on type click 
 
    $(this).addClass('selected'); 
 
    if ($('.single-type').hasClass('selected')) { 
 
    $('.select-item').removeClass('multiType').addClass('singleType'); 
 
    } else if ($('.multi-type').hasClass('selected')) { 
 
    $('.select-item').removeClass('singleType').addClass('multiType'); 
 
    } 
 
}); 
 

 
$('.select-item a').click(function() { 
 

 
    var check = $(this).parent().hasClass('singleType'); 
 
    if (check) {//check if type is single 
 
    if ($('.select-item a').hasClass('selected')) { 
 
     $('.select-item a').removeClass('selected');//if there is selected remove the select class 
 
     $(this).addClass('selected');//add select on click element 
 
    } else { 
 
     $(this).addClass('selected');//add select on click element 
 
    } 
 
    } else { 
 
    $(this).addClass('selected');//add select on click element 
 
    } 
 
});
.selected { 
 
    color: black 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="select-type"> 
 
    <a href="javascript:void(0);" class="single-type">single</a> 
 
    <a href="javascript:void(0);" class="multi-type">Multiple</a> 
 
</div> 
 
<div class="select-item"> 
 
    <a href="javascript:void(0);" class="btn">Item 1</a> 
 
    <a href="javascript:void(0);" class="btn">Item 2</a> 
 
    <a href="javascript:void(0);" class="btn">Item 3</a> 
 
    <a href="javascript:void(0);" class="btn">Item 4</a> 
 
</div>

尝试这种方式