2016-08-17 109 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>

嘗試這種方式