Javascript通过复选框更改div的宽度

时间:2016-01-13 18:41:38

标签: jquery html css

这是我的来源:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery Show Hide Using Checkboxes</title>
<style type="text/css">
.box{
    padding: 20px;
    display: none;
    margin-top: 20px;
    border: 1px solid #000;
}
.red{ background: #ff0000; }
.green{ background: #00ff00; }
.blue{ background: #0000ff; }
</style>
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript">

function getCookieValue(a) {
  var b = document.cookie.match('(^|;)\\s*' + a + '\\s*=\\s*([^;]+)');
  return b ? b.pop() : '';
}

$(document).ready(function(){

var redEl = $('input[value="red"]');
var greenEl = $('input[value="green"]');
var blueEl = $('input[value="blue"]');

if (document.cookie.indexOf('red=') != -1) {
    redEl.prop("checked", $.parseJSON(getCookieValue("red")));
}

if (document.cookie.indexOf('green=') != -1) {
    greenEl.prop("checked", $.parseJSON(getCookieValue("green")));
}

if (document.cookie.indexOf('blue=') != -1) {
    blueEl.prop("checked", $.parseJSON(getCookieValue("blue")));
}

$(".red").toggle(redEl.prop("checked"));
$(".green").toggle(greenEl.prop("checked"));
$(".blue").toggle(blueEl.prop("checked"));

$('input[type="checkbox"]').click(function(){

    var expiryDate = new Date();
    expiryDate.setDate(expiryDate.getDate() + 1);
    expiryDate = expiryDate.toUTCString();

    if($(this).attr("value")=="red"){
        $(".red").toggle(this.checked);
        document.cookie="red=" + this.checked.toString() + "; expires=" + expiryDate;           
    }
    if($(this).attr("value")=="green"){
        $(".green").toggle(this.checked);
        document.cookie="green=" + this.checked.toString() + "; expires=" + expiryDate;
        if(this.checked) 
            $(".red").css("width","50%");
        else
            $(".red").css("width","100%");

    }
    if($(this).attr("value")=="blue"){
        $(".blue").toggle(this.checked);
        document.cookie="blue=" + this.checked.toString() + "; expires=" + expiryDate;
    }
});
});
</script>
</head>
<body>
<div>
    <label><input type="checkbox" name="colorCheckbox" value="red"> red</label>
    <label><input type="checkbox" name="colorCheckbox" value="green"> green</label>
    <label><input type="checkbox" name="colorCheckbox" value="blue"> blue</label>
 </div>
 <div class="red box">You have selected <strong>red checkbox</strong> so i am here</div>
  <div class="green box">You have selected <strong>green checkbox</strong> so i am here</div>
   <div class="blue box">You have selected <strong>blue checkbox</strong> so i am here</div>
 </body>
</html>

它基本上做的是我有3个div。最后一个工作正常,在这种情况下并不重要。 我的绿色和红色div都是宽度的50%。如果检查绿色,则红色为50%,如果未检查绿色,则红色为100%。

我的问题是,即使检查绿色,然后红色应该是50%但不是。红色仍然是100%。我可以使红色50%的唯一方法是取消选中然后检查绿色。它就像页面不加载红色:开始时宽度为50%。

我注意到通过重新加载页面并在红色div中写入“style =”width:100%;“”当我取消选中时,检查绿色,将其更改为:style =“width:50%; “

因此源可能需要更改,因此如果选中绿色,则加载宽度为50%。你们这些人可以请一看吗?

2 个答案:

答案 0 :(得分:0)

您可以在css中定义width

.red{ 
    background: #ff0000; 
    width: :100%;
}
.green{ 
    background: #00ff00; 
    width: :50%;
}

更改

if(this.checked) 
    $(".red").css("width","50%");                
else
   $(".red").css("width","100%"); 

if(this.checked) {
    $(".red").css("width","50%");
    $(".green").css("width","50%");
}                
else{
   $(".red").css("width","100%");  
}

<强> JsFiddle Demo

答案 1 :(得分:0)

UPDATE :在设置宽度之前,您需要使用.is(":checked")检查选中的复选框,并根据这些确定需要设置为50%或100%的内容。

    function getCookieValue(a) {
  var b = document.cookie.match('(^|;)\\s*' + a + '\\s*=\\s*([^;]+)');
  return b ? b.pop() : '';
}

$(document).ready(function(){

var redEl = $('input[value="red"]');
var greenEl = $('input[value="green"]');
var blueEl = $('input[value="blue"]');

if (document.cookie.indexOf('red=') != -1) {
    redEl.prop("checked", $.parseJSON(getCookieValue("red")));
}

if (document.cookie.indexOf('green=') != -1) {
    greenEl.prop("checked", $.parseJSON(getCookieValue("green")));
}

if (document.cookie.indexOf('blue=') != -1) {
    blueEl.prop("checked", $.parseJSON(getCookieValue("blue")));
}

$(".red").toggle(redEl.prop("checked"));
$(".green").toggle(greenEl.prop("checked"));
$(".blue").toggle(blueEl.prop("checked"));

$('input[type="checkbox"]').click(function(){    
    var expiryDate = new Date();
    expiryDate.setDate(expiryDate.getDate() + 1);
    expiryDate = expiryDate.toUTCString();

    if($(this).attr("value")=="red"){
        $(".red").toggle(this.checked);
        document.cookie="red=" + this.checked.toString() + "; expires=" + expiryDate;         
    }
    if($(this).attr("value")=="green"){   
        $(".green").toggle(this.checked);
        document.cookie="green=" + this.checked.toString() + "; expires=" + expiryDate;
    }           
    if($(this).attr("value")=="blue"){
        $(".blue").toggle(this.checked);
        document.cookie="blue=" + this.checked.toString() + "; expires=" + expiryDate;
    }

    if(redEl.is(":checked") && greenEl.is(":checked")) {    
         $(".red").css("width","50%");
         $(".green").css("width","50%"); }
    else if(greenEl.is(":checked"))
           $(".green").css("width","100%");
    else if(redEl.is(":checked"))
           $(".red").css("width","100%");
});
});

工作示例:https://jsfiddle.net/DinoMyte/nx7ru4y0/2/