单击菜单复选框选项时更改btn颜色

时间:2016-01-20 23:03:53

标签: javascript jquery css

当用户点击菜单列表中的某个选项时,我试图让按钮更改颜色。这可能吗? 对于btn_clear,我希望背景颜色在单击其中一个菜单选项后立即自动更改为蓝色,并且对于btn_apply,颜色相同但颜色更改为RED。 例如,对于类别"产品"用户点击" Alpha"然后按钮颜色变化立即自动生效。

请查看我的FIDDLE ... FIDDLE (SA片段似乎不想工作......对不起)。



$(".btn_clear").on('click', function (e) {
    e.stopPropagation();
    $(this).closest('.dropdown-menu').find('input[type="checkbox"]').prop('checked', false);
});

$('.dropdown-menu').click(function(e) {
    e.stopPropagation();
});

$("checkbox").on("click", function(e) {
  e.preventDefault();
  
  var i = $("li").index( $(this).parent() );
  
  if ( i === 1 ) {
    $('btn_clear').css('background', 'blue');
  } else if ( i === 2 ) {
    $('btn_apply').css('background', 'red');
  }
  
});

.scrollable-menu {
    height: auto;
    max-height: 200px;
    overflow-x: hidden;
}

.checkbox :hover {
      background-color:red;
      cursor:pointer;
    }

.div_form :hover {
      background-color:green;
      cursor:pointer;
    }

.btn_clear {
    float: right;
	display: inline-block;
	box-sizing: border-box;
	width: 50%;
	padding: 10px 29px;
	text-align: center;
    background-color:grey
  }
  
.btn_apply {
    float: left;
	display: inline-block;
	box-sizing: border-box;
	width: 50%;
	padding: 10px 17px;
	text-align: center;
    background-color:yellow
    }


.checkbox label, .radio label {
    min-height: 20px;
    padding-left: 30px;
	padding-right:30px;
    margin-bottom: 0;
    font-weight: 400;
    cursor: pointer;
    width: 100%;
}

.div_form {
	position: absolute;
	bottom: 0;
	bottom: -70px
}

.btn {
	border-radius:0;
	margin-top:5px
}

.dropdown-menu {
	border-radius:0;
	border:5px solid blue
}

.typeahead {
	width:90%;
	margin-left:10px
}

<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha/js/umd/dropdown.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha/js/bootstrap.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha/css/bootstrap.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-beta1/jquery.js"></script>
<div class="btn-toolbar">
        <!--Default buttons with dropdown menu-->
        <div class="btn-group">
            <button class="btn btn-primary" type="button">Products</button>
            <button class="btn btn-primary dropdown-toggle" data-toggle="dropdown" type="button"><span class="caret"></span></button>
            <div class="dropdown-menu" style="margin-left: 2em">
                <div style="position: relative;">
                    <div class=" scrollable-menu" style="margin-bottom: 70px;">
                        <input class="countries" placeholder="Countries" type="text"> <div class="checkbox">
                    <label><input value="" type="checkbox"> Alpha</label>
                </div>
                <div class="checkbox">
                    <label><input value="" type="checkbox"> Beta
                    </label>
                </div>
                <div class="checkbox">
                    <label><input value="" type="checkbox"> Gamma</label>
                </div>
                <div class="checkbox">
                    <label><input value="" type="checkbox"> Delta</label>
                </div>
				<div class="checkbox">
                    <label><input value="" type="checkbox"> Omega</label>
                </div>
                <div class="checkbox">
                    <label><input value="" type="checkbox"> Koppa
                    </label>
                </div>
                        <div class="div_form">
                            <span class="btn_apply">Apply</span> <span class="btn_clear">Clear</span>
                        </div>
                    </div>
                </div>
            </div>
        </div><!--Success buttons with dropdown menu-->
        <div class="btn-group">
            <button class="btn btn-primary" type="button">Availability</button>
            <button class="btn btn-primary dropdown-toggle" data-toggle="dropdown" type="button"><span class="caret"></span></button>
            <div class="dropdown-menu" style="margin-left: 2em">
                <div style="position: relative;">
                    <div class=" scrollable-menu" style="margin-bottom: 70px;">
                        <input class="typeahead" placeholder="Search values" type="text"> <div class="checkbox">
                    <label><input value="" type="checkbox"> One</label>
                </div>
                <div class="checkbox">
                    <label><input value="" type="checkbox"> Two
                    </label>
                </div>
                <div class="checkbox">
                    <label><input value="" type="checkbox"> Nine</label>
                </div>
                <div class="checkbox">
                    <label><input value="" type="checkbox"> Eight</label>
                </div>
				<div class="checkbox">
                    <label><input value="" type="checkbox"> Seven</label>
                </div>
                <div class="checkbox">
                    <label><input value="" type="checkbox"> Fifteen
                    </label>
                </div>
                        <div class="div_form">
                            <span class="btn_apply">Apply</span> <span class="btn_clear">Clear</span>
                        </div>
                    </div>
                </div>
            </div>
        </div><!--Warning buttons with dropdown menu-->
    </div>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

当选择一个选项时,这将改变两个按钮的颜色:

$(".checkbox").on("click", function(e) {
  $('.btn_clear').css('background-color', 'blue');
  $('.btn_apply').css('background-color', 'red');
});

段:http://www.bootply.com/0CQWCAtU2s

答案 1 :(得分:0)

是的,可以http://www.bootply.com/rb3Uyw68Zg

但你的代码有一些问题,我添加了一些“console.log”,看看那里发生了什么

首先你错过了一个“。”在您的选择器中,要更改

if ( i === 1 ) {
  $('btn_clear').css('background', 'blue');
} else if ( i === 2 ) {
  $('btn_apply').css('background', 'red');
}

if ( i === 1 ) {
  $('.btn_clear').css('background', 'blue');
} else if ( i === 2 ) {
  $('.btn_apply').css('background', 'red');
}

var i = $("li").index( $(this).parent() );

总是得-1,所以你永远不会进入那些ifs,你必须修改这一行才能让你的背景颜色变化被调用。

这是我更改后的代码http://www.bootply.com/rb3Uyw68Zg

修改

要限制每个菜单点击次数的处理,您可以使用descendant selector,因此您应该更改:

$(".checkbox").on("click", function(e) {

进入

$(".products .checkbox").on("click", function(e) {

这意味着,您只会处理“.products”子项的复选框的点击次数(您还需要在您的下拉列表中添加产品类)

这是一个更新的示例:http://www.bootply.com/QoIe6kIt2e