使用 jquery 检测 aria-labelledby 值的变化

Detect change in aria-labelledby value using jquery

本文关键字:变化 aria-labelledby jquery 检测 使用      更新时间:2023-09-26

如何使用jquery检测,基本上是和带有咏叹调的锚标签是否正在向上和向下切换(即其咏叹调标签正在更改为向上和向下)

<a href="#" class="ui-slider-updownhandle" data-corners="true" data-wrappers="span" data-theme="c" role="slider" aria-valuemin="0" aria-valuemax="1" aria-valuenow="up" aria-valuetext="Up" title="Up" aria-labelledby="label-1" style="left: 0%;"><span class="ui-btn-inner"><span class="ui-btn-text"></span></span></a>

试试这个并获取移动jquery滑块的当前值

$($('.ui-slider-track.ui-shadow-inset.ui-bar-c.ui-corner-all').children()[1]).attr('aria-valuenow')

我不相信你可以主动"监控"一个元素来记录一个变化,那就是跨浏览器。如果您"知道"元素何时通过事件处理程序或其他东西触发,当然您可以获得attr

 if( jQuery('.ui-slider-updownhandle').attr('aria-labelledby') === "UP" ){
   // do something.
 }

当您将属性应用于元素时,Jaws 浏览器知道"何时更新内容"。这就是你所说的吗?

我看到你有咏叹调标签为label-1,所以不确定你说"向上"或"向下"是什么意思。

请尝试此操作,我的链接没有preventDefault()触发,但这是为了让您可以看到事件触发。

 $('.ui-slider-updownhandle').bind('click', function(e){
      //just grabbing some values to show.
      console.log($(this).attr('aria-valuetext'), $(this).attr('aria-labelledby'));
      e.preventDefault();
 })

如果我在您需要的内容方面偏离了基础,我深表歉意。说实话,我不完全确定你需要什么,所以计算我将从一个假设开始:-)

注意:如果您在使用 attr 时遇到问题,请尝试改为prop

jQuery.fn.extend({ 
   aria:function(arrib,NewVal){
     return (NewVal) ? jQuery(this).attr("aria-"+arrib,NewVal) : jQuery(this).attr("aria-"+arrib);
 }
});