使用jquery点击复选框更改css

时间:2016-09-10 11:06:22

标签: jquery html css jquery-ui logic

这里我试图在点击进入复选框时更改附加项目的css,其中类为“.item”。 这里发生的事情是:当我点击添加的项目时,将应用css('line-through');相反,我只想点击复选框时才会应用css。

我尝试通过控制台运行各个查询,但它返回了正确的值,但它没有显示写入css。

function entervalue()
{
  var text = $('#inputext').val();
      $("#list").append('<div class="item"> <input type="checkbox"> ' + text + '</div>');
  $("#inputext").val('');
}



$(document).ready(function(){

$('#inputext').keyup(function(b)
{

if (b.keyCode===13)
{
  entervalue();
}

})
});
$(document).on('click', '.item', function() {
  if ($(this).css('textDecoration') == 'line-through')
  {
    $(this).css('textDecoration', 'none');
  }
  else

  {
      $(this).css('textDecoration', 'line-through');
  }

});
body {
    font: 14px 'Helvetica Neue';
    line-height: 1.4em;
    background: #f5f5f5;
    color: #4d4d4d;
    margin: 0 auto;
}

#inputext {
  background: white;
  font-size: 42px;
  margin-left: 2%;
  margin-top: 1%;
  position: fixed;
  border-style: inset;
  border-color: floralwhite;
  width: 26%;
}


#app{
  background-color: aliceblue;
  width: 72%;
  height: 70%;
  border-bottom-style:inset;
  border-width: thick;
  border-radius: 3%;
  margin-left: 13%;
  margin-top: 19%;
}

#item1{
  font-weight: 500;
}
.item{
  font-size: 20px;
      border-bottom: solid darkcyan;
      margin-bottom: 5%;
      margin-top: 6%;
      margin-right: 3%;
      margin-left: -5%;

}
.maincontent{

  background-color: darkseagreen;
  margin-top: 6%;
  margin-left: 36%;
  height: 60%;
  width: 30%;
  position: fixed;
  border-style: groove;
  border-width: thick;
  border-radius: 5%;

}
.strikeThrough{
  text-decoration:line-through;
}
  
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

<div class="maincontent">

<input type="text" id="inputext" placeholder="todos"/>
<div id="app">
<ul id="list">

</ul>
</div>
</div>

function entervalue()
{
  var text = $('#inputext').val();
      $("#list").append('<div class="item"> <input type="checkbox"> ' + text + '</div>');
  $("#inputext").val('');
}



$(document).ready(function(){

$('#inputext').keyup(function(b)
{

if (b.keyCode===13)
{
  entervalue();
}

})
});
$(document).on('click', '.item', function() {
  if ($(this).css('textDecoration') == 'line-through')
  {
    $(this).css('textDecoration', 'none');
  }
  else

  {
      $(this).css('textDecoration', 'line-through');
  }

});

5 个答案:

答案 0 :(得分:1)

不确定帖子中的“附加项目”评论 - 您是否在页面加载后向DOM添加内容?在这种情况下,您需要指定click事件处理程序($(document).on('click','textCheckbox ...'等)。

以下是更改单个元素上的css的更好的替代方法 - 你指定一个类(虽然有攻击的CSS),然后在复选框状态下切换它。

$(document).ready(function(){
      $('#textCheckbox').on('click',function(){
       if($(this).is(':checked'))        {$('.item').addClass('strikeThrough')}
       else{$('.item').removeClass('strikeThrough')}
});
    })
.strikeThrough{text-decoration:line-through}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>Checkbox
  <input type="checkbox" id="textCheckbox">
</label>

<p class="item">TEST CONTENT</p>

你甚至可以通过使用.toggleClass()来缩写这一点(只需在复选框的每次点击时切换直通类。:

$(document).ready(function(){
      $('#textCheckbox').on('click',function(){
       $('.item').toggleClass('strikeThrough')
});
    })
.strikeThrough{text-decoration:line-through}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>Checkbox
  <input type="checkbox" id="textCheckbox">
</label>

<p class="item">TEST CONTENT</p>

答案 1 :(得分:0)

使用复选框上的onchange事件处理程序并检查复选框是否已选中使用$('input[type=checkbox]').prop('checked')

$('input[type=checkbox]').on('change', function(){
  if($(this).prop('checked')){
     console.log($('.item').css('textDecoration'));
  if ($('.item').css('textDecoration') == 'line-through')
  {
    $('.item').css('textDecoration', 'none');
  }
  else

  {
      $('.item').css('textecoration', 'line-through');
  }
  }
 

})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" />
<div class="item" >Hello World</div>

如果您希望具有类.item的项目在选中复选框时具有css直通,而不是在未选中复选框时。这就是你需要的

$('input[type=checkbox]').on('change', function(){
  if($(this).prop('checked')){
     
  
      $('.item').css('text-decoration', 'line-through');
  }
  
  else {
      
     $('.item').css('text-decoration', 'none');
  }
 

})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" />
<div class="item" >Hello World</div>

答案 2 :(得分:0)

  

可能会帮助你

$(":checkbox").on("change", function() {
    var that = this;
    $('.txt-class').css("background-color", function() {
        return that.checked ? "#ff0000" : "";
    });
  
   $('.txt-class').css("textDecoration", function() {
        return that.checked ? "line-through" : "";
    });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div><input type='checkbox' name='groupid' value='1'>1</div>
<div class="txt-class">
Ganesh Putta
</div>

答案 3 :(得分:0)

试试这个。

$('.checkbox').on('click', function(){
    if($(this).prop('checked')){
        $(this).parent().find('.item').css('text-decoration','line-through');
    }         
    else {
        $(this).parent().find('.item').css('text-decoration','none');
    }
});
<script src="https://code.jquery.com/jquery-2.1.2.min.js"></script>
<div class="check-label"><input type="checkbox" class="checkbox" /><span class="item">Pick up Comic Books</span></div>
<div class="check-label"><input type="checkbox" class="checkbox" /><span class="item">Cook Dinner</span></div>

通过将文本和复选框放在label标签内,您只需单击文本即可检查该项目。

编辑:根据OP的评论更新

答案 4 :(得分:0)

尝试以下。 注意:在您的情况下,textDecoration应该是文本修饰

<html>
<head></head>
<title></title>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

<style type="text/css">



</style>

<body>

<input type="checkbox"> Pick me
 <p>I'm under him</p>

</body>

<script type="text/javascript">

$(document).ready(function(){
  $("input[type='checkbox']").on('change',function(){
    var is_it_checked = $(this).prop("checked");//check the checkbox is checked or not

    //according to the condition, do the styles with if condition like below
    if (is_it_checked == true) 
      {
        $("p").css({"text-decoration":"line-through"});
      }
     else
     {
       $("p").css({"text-decoration":"none"});
     }


  });
});

</script>

</html>