【问题标题】:JS Add action to change classJS 添加动作改变类
【发布时间】:2016-11-09 16:07:44
【问题描述】:

在我的网站上,我有几个带有输入的 div,默认情况下,此单选按钮之一被选中,并且输入上方的跨度具有类 checked

看起来像:

<label>
<li class="vir">
<div class="radio">
<span class=""><input type="radio" class="attribute_radio" name="group_4" value="34"></span>
</div>
</li>
</label>

//default option span.checked below

<label>
<li class="vir">
<div class="radio">
<span class="checked"><input type="radio" class="attribute_radio" name="group_4" value="34"></span>
</div>
</li>
</label>

现在对于 span.checked 所在的标签,我想为元素添加 &lt;li class="vir"&gt;test 所以我添加了以下代码:

<script type="text/jscript">
$(function() {
  var x =document.querySelectorAll('span.checked');
[].forEach.call(x, function(span) {
  span.parentElement.parentElement.classList.add('test');
});
});
</script>

当页面在默认选项类中加载时test 被添加到li 但是,当我点击另一个单选按钮类没有改变时,旧的li 类仍然存在,而在新选择的@ 987654329@ class test 没有出现。如何将此操作添加到我的代码中?

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    你需要在复选框中寻找变化而不是运行你的代码

    https://api.jquery.com/change/

    Demo

    $(function() {
      $('span input:radio').change(function() {
        if (this.checked) { // if radio button is checked
          var x = document.querySelectorAll('li.vir');
          [].forEach.call(x, function(li) { // looping over all li with class vir
              li.classList.remove('test'); // remove class test from li
          });
          this.parentElement.parentElement.parentElement.classList.add('test');
        }
      }).change(); // .change will run for the 1st time when page loads
    });
    

    你可以更好地使用完整的 jQuery

    Demo

    $(function() {
      $('span input:radio').change(function() {
        if (this.checked) { // if radio button is checked
          $('li.vir').removeClass('test'); //remove class test from li
          $(this).closest('li').addClass('test'); // add class test to li
        }
      }).change(); // .change will run for the 1st time when page loads
    });
    

    https://api.jquery.com/addclass/

    https://api.jquery.com/removeclass/

    【讨论】:

    • 我检查了你所有的代码,也检查了之前的代码。没用。我认为类选择器有问题。
    • @AgnesTom 检查演示链接,它对你有用吗?
    • 它在 jsfiddle 中工作,但不在我的网站上。我不知道为什么。最后我使用了这个jsfiddle.net/ukbgqn1c/5 非常感谢你的帮助,它帮助我找到了正确的方法。
    • @AgnesTom 很高兴它提供了帮助,并且您找到了一种方法来使其根据您的需要工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    相关资源
    最近更新 更多