用jquery点击复选框改变css

Posted

技术标签:

【中文标题】用jquery点击复选框改变css【英文标题】:changing css on click on checkbox with jquery 【发布时间】:2017-01-18 10:05:58 【问题描述】:

在这里,我试图在单击复选框时更改具有类为“.item”的附加项目的 css。 这里发生的事情是:当我点击添加的项目时,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');
  

);

【问题讨论】:

textDecoration 应该是text-decoration 否? 我是text-decoration,here you go. 【参考方案1】:

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

以下是更改单个元素上的 css 的更好替代方法 - 您指定一个类(尽管使用罢工的 CSS),然后将其切换到复选框状态。

$(document).ready(function()
      $('#textCheckbox').on('click',function()
       if($(this).is(':checked'))        $('.item').addClass('strikeThrough')
       else$('.item').removeClass('strikeThrough')
);
    )
.strikeThroughtext-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() 来缩写它,如下所示(只需在每次单击复选框时切换 line-through 类。:

$(document).ready(function()
      $('#textCheckbox').on('click',function()
       $('.item').toggleClass('strikeThrough')
);
    )
.strikeThroughtext-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>

【讨论】:

我尝试按照建议进行更改,但查询仍然相同。【参考方案2】:

也许这会对你有所帮助

$(":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>

【讨论】:

我尝试按照建议进行更改,但查询仍然相同。 哦真的...我的代码工作正常..然后将您的代码添加到sn-p,然后我会在那里进行更改 哥们,我让你把你的代码复制到sn-p,这样很容易解决【参考方案3】:

在复选框上使用 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>

【讨论】:

我尝试按照建议进行更改,但查询仍然相同。【参考方案4】:

试试下面。 注意:在你的情况下 textDecoration 应该是 text-decoration

<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>

【讨论】:

【参考方案5】:

试试这个。

$('.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>

通过将文本和复选框放在标签标签内,您也可以通过单击文本来检查项目。

编辑:根据 OP 的评论进行更新

【讨论】:

我尝试按照建议进行更改,但查询仍然相同。 你能解释更多吗? query is same 是什么意思?它没有通过但被检查吗?有没有突破? 已应用 css,但我希望仅在选中复选框时应用 css,现在如果我单击输入文本也应用 css @GauravSoni 我已经更新了答案。现在试试。 CSS 仅在单击复选框而不是任务文本时更改。

以上是关于用jquery点击复选框改变css的主要内容,如果未能解决你的问题,请参考以下文章

可以用css3改变复选框的背景色和勾上的颜色吗 一定要用js?

如何使用 jQuery 处理复选框的初始状态和更改?

jquery实现 点击复选框,勾选所有复选框,再次点击取消勾选,这个功能怎么实现?

ztree怎么通过修改css改变字体和图标大小

用jQuery 点击单选框 全部选中 如何做

jQuery Mobile 复选框 CSS