javascript - 根据css样式的绑定(bind)改变aria-label

标签 javascript knockout.js wai-aria

我有一个带有 aria-label 的复选框,但我不确定如何更改此 aria-label 文本以反射(reflect)用户是否选中该复选框。是否可以在渲染 css 的同一函数中控制 aria-label 文本?

选中和取消选中框的函数:

checkbox = ko.pureComputed(function () {
     var checked = checked(),
         uncheck = uncheck(),
         checkedIcon = 'icon_check',
         uncheckedIcon = 'no_check',

                if (checked) {
                    //Can i add in here what the aria-label text should be?
                    return checkedIcon;
                }

                if (uncheck) {
                    return uncheckedIcon;
                }
            });

最佳答案

如果您想根据复选框值更改属性,可以执行类似的操作。 HTML:

<input type="checkbox" data-bind="checked:Mycheckbox,attr:{'aria-label':MyAriaLabel}" >

虚拟机:

 $(function () {
  var MainViewModel = function () {
     var self = this;
     self.MyAriaLabel = ko.observable('aria-lebel');
     self.Mycheckbox = ko.observable();

     self.Mycheckbox.subscribe(function(newVal){
       self.MyAriaLabel(newVal?'Something' : 'Something else');
     })
  }
  ko.applyBindings(new MainViewModel());
})

示例:http://jsfiddle.net/GSvnh/5129/

关于javascript - 根据css样式的绑定(bind)改变aria-label,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36536528/

相关文章:

Javascript 引用错误 - 无法在对象内找到函数

JavaScript 类型错误 "is not a constructor"

javascript - 为什么返回 Object.keys() 一个对象(看起来像数组)?

javascript - 在 knockout 应用程序中使用 setInterval 进行轮询实现?

knockout.js - 没有包装器的 Knockout Typescript 传递对象

javascript - 使用 CustomBindings 在 DOM 元素被 Knockout 移除之前淡出

html - <abbr/>-元素: aria-label or title attribute

javascript - 在页面加载时为下拉菜单运行 javascript?

javascript - 轮播的 WAI-ARIA 角色(又名 slider 、幻灯片、画廊)

html-table - 如何正确处理没有标题行的 Html 表的可访问性