【问题标题】:How to add a class based on programmatically changed data in input aria-valuenow如何根据输入 aria-valuenow 中以编程方式更改的数据添加类
【发布时间】:2019-07-22 05:57:18
【问题描述】:

我之前问过一个关于如何“Add a class to a button if aria-valuenow = 0”的问题,我得到了一个解决方案,但我认为当输入中的滑块变为零时它会改变。

它仅适用于 aria-valuenow 中加载的内容。例如,如果 aria-valuenow=50 已加载,则代码将不起作用,但如果 area-valuenow=0 已加载,则代码将起作用。

那么,如何根据以编程方式更改值的输入将类添加到 div?

代码:

<div class="plyr__control js-volume" data-plyr="mute">My Button</div>
<input data-plyr="volume" type="range" min="0" max="1" step="0.05" value="1" 
autocomplete="off" role="slider" aria-label="Volume" aria-valuemin="0"
aria-valuemax="100" aria-valuenow="*programmatically changes*" id="plyr-volume-2587" style="--value:0%; 
width: 0px; left: 200px;" aria-valuetext="0.0%" class="plyr__tab-focus">

JS代码:

$(function() {
var val = $('.plyr__volume input').attr('aria-valuenow');
if(val == "0") $('.js-volume').addClass('test');
})();

输入变化值的工作示例 - https://codepen.io/openbayou/pen/JQeEry

【问题讨论】:

    标签: javascript jquery input plyr.js


    【解决方案1】:

    我认为你不需要额外的属性(aria-valuenow),你可以根据你的 input 事件检查 value可以添加/删除类:

    演示:

    (function() {
      $('#plyr-volume-2587').on('input',function(){
        if(this.value == '0')
          $('.js-volume').addClass('test')
        else
          $('.js-volume').removeClass('test')
      });
      $('#plyr-volume-2587').trigger('input');
    })();
    .test{
      color: red;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div class="plyr__control js-volume" data-plyr="mute">My Button</div>
    <input data-plyr="volume" type="range" min="0" max="1" step="0.05" value="1" 
    autocomplete="off" role="slider" aria-label="Volume" aria-valuemin="0"
    aria-valuemax="100" id="plyr-volume-2587" style="" aria-valuetext="0.0%" class="plyr__tab-focus">

    【讨论】:

    • 我建议使用jQuery#toggleClass 而不是手动添加/删除类。
    • @Mamun 这很好,但是当我释放点击时它会改变。无论如何让它自动转换。我试过$('#plyr-volume-2587').on('change');,没用
    • @GregorySchultz,你可以试试 input 事件而不是 change,更新了答案,请检查:)
    • 有效。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多