:关注 jQuery
:focus in jQuery
为什么这不起作用,我该如何正确地做到这一点
if ($('#ch03').is(':focus')) {
$('this').attr("aria-grabbed","true");
} else {
$('this').attr("aria-grabbed","false");
}
或基于我无法开始工作的现有 SO 解决方案
var inFocus = false;
$('#ch03').focus(function() {
$('#ch03').attr("aria-grabbed","true");
});
$('#ch03').blur(function() {
$('#ch03').attr("aria-grabbed","false");
});
HTML
<div id="activity_contents">
<div id="columns" class="clearfix">
<div id="col_1" class="column">
<div class="column_head">Section A</div>
<ul id="tier1" class="connected" role="region" aria-labelledby="col_1" aria-dropeffect="move">
</ul>
<div class="clearfix"></div>
</div>
<div id="col_2" class="column">
<div class="column_head">Section B</div>
<ul id="tier2" class="connected" role="region" aria-labelledby="col_2" aria-dropeffect="move">
</ul>
</div>
<div id="col_3" class="column">
<div class="column_head">Section C</div>
<ul id="tier3" class="connected" role="region" aria-labelledby="col_3" aria- dropeffect="move">
</ul>
</div>
<div id="col_4" class="column last">
<div class="column_head">Section D </div>
<ul id="tier4" class="connected" role="region" aria-labelledby="col_4" aria-dropeffect="move">
</ul>
</div>
</div>
<div id="well" class="clearfix">
<ul id="choices" class="connected" aria-labelledby="well" role="region">
<li id="ch01" class="choice"><a href="#">Drag item 1</a></li>
<li id="ch03" class="choice"><a href="#">Drag item 2</a></li>
<li id="ch04" class="choice"><a href="#">Drag item 3</a></li>
<li id="ch02" class="choice"><a href="#">Drag item 4</a></li>
</ul>
</div>
</div>
感谢您对此提供的任何帮助。代码来自 jQueriUI dragnDrop/Sortable。我想要实现的是通过动态添加 aria-roles 使其更易于访问。
选项 1 : 依赖于 DOM 上的 click
事件,它检查元素是否有焦点然后设置属性 aria-grabbed
值。
$(document).on("click",function(){
$("#ch03").attr("aria-grabbed",$("#ch03").is(':focus'));
});
示例:https://jsfiddle.net/DinoMyte/2oygeh0w
选项 2: 只需触发元素上的 focus
和 blur
事件即可设置属性“aria-grabbed
”的值。
$("#ch03").on("focus",function(){
$(this).attr("aria-grabbed",true);
}).on("blur",function()
{
$(this).attr("aria-grabbed",false);
});;
示例:https://jsfiddle.net/DinoMyte/2oygeh0w/1/
UPDATE :根据您发布的 html,如果您尝试在焦点上的每个 li 上设置属性 'aria-grabbed'。
$('#choices li a').on("focus",function(e)
{
$(this).closest('li').attr("aria-grabbed",true);
$(this).addClass("selected");
}).on("blur",function(e)
{
$(this).closest('li').attr("aria-grabbed",false);
$(this).removeClass("selected");
});
使用 DinoMyte 的方法和来自 sitepoint 网站的一些代码
http://www.sitepoint.com/accessible-drag-drop/
/*****
测试
****/
//get the collection of draggable targets and add their draggable attribute
for(var
targets = document.querySelectorAll('[data-draggable="target"]'),
len = targets.length,
i = 0; i < len; i ++)
{
targets[i].setAttribute('aria-dropeffect', 'none');
}
//get the collection of draggable items and add their draggable attributes
for(var
items = document.querySelectorAll('[data-draggable="item"]'),
len = items.length,
i = 0; i < len; i ++)
{
items[i].setAttribute('draggable', 'true');
items[i].setAttribute('aria-grabbed', 'false');
items[i].setAttribute('tabindex', '0');
}
//Place some dynamic aria roles for accessibility
$("#ch01").on("focus",function(){
$(this).attr("aria-grabbed",true);
}).on("blur",function()
{
$(this).attr("aria-grabbed",false);
});
$("#ch02").on("focus",function(){
$(this).attr("aria-grabbed",true);
}).on("blur",function()
{
$(this).attr("aria-grabbed",false);
});
$("#ch03").on("focus",function(){
$(this).attr("aria-grabbed",true);
}).on("blur",function()
{
$(this).attr("aria-grabbed",false);
});
$("#ch04").on("focus",function(){
$(this).attr("aria-grabbed",true);
}).on("blur",function()
{
$(this).attr("aria-grabbed",false);
});
//end
仍然需要清理,但这个想法可行。一次一小步,我会在你的帮助下到达那里:-)
为什么这不起作用,我该如何正确地做到这一点
if ($('#ch03').is(':focus')) {
$('this').attr("aria-grabbed","true");
} else {
$('this').attr("aria-grabbed","false");
}
或基于我无法开始工作的现有 SO 解决方案
var inFocus = false;
$('#ch03').focus(function() {
$('#ch03').attr("aria-grabbed","true");
});
$('#ch03').blur(function() {
$('#ch03').attr("aria-grabbed","false");
});
HTML
<div id="activity_contents">
<div id="columns" class="clearfix">
<div id="col_1" class="column">
<div class="column_head">Section A</div>
<ul id="tier1" class="connected" role="region" aria-labelledby="col_1" aria-dropeffect="move">
</ul>
<div class="clearfix"></div>
</div>
<div id="col_2" class="column">
<div class="column_head">Section B</div>
<ul id="tier2" class="connected" role="region" aria-labelledby="col_2" aria-dropeffect="move">
</ul>
</div>
<div id="col_3" class="column">
<div class="column_head">Section C</div>
<ul id="tier3" class="connected" role="region" aria-labelledby="col_3" aria- dropeffect="move">
</ul>
</div>
<div id="col_4" class="column last">
<div class="column_head">Section D </div>
<ul id="tier4" class="connected" role="region" aria-labelledby="col_4" aria-dropeffect="move">
</ul>
</div>
</div>
<div id="well" class="clearfix">
<ul id="choices" class="connected" aria-labelledby="well" role="region">
<li id="ch01" class="choice"><a href="#">Drag item 1</a></li>
<li id="ch03" class="choice"><a href="#">Drag item 2</a></li>
<li id="ch04" class="choice"><a href="#">Drag item 3</a></li>
<li id="ch02" class="choice"><a href="#">Drag item 4</a></li>
</ul>
</div>
</div>
感谢您对此提供的任何帮助。代码来自 jQueriUI dragnDrop/Sortable。我想要实现的是通过动态添加 aria-roles 使其更易于访问。
选项 1 : 依赖于 DOM 上的 click
事件,它检查元素是否有焦点然后设置属性 aria-grabbed
值。
$(document).on("click",function(){
$("#ch03").attr("aria-grabbed",$("#ch03").is(':focus'));
});
示例:https://jsfiddle.net/DinoMyte/2oygeh0w
选项 2: 只需触发元素上的 focus
和 blur
事件即可设置属性“aria-grabbed
”的值。
$("#ch03").on("focus",function(){
$(this).attr("aria-grabbed",true);
}).on("blur",function()
{
$(this).attr("aria-grabbed",false);
});;
示例:https://jsfiddle.net/DinoMyte/2oygeh0w/1/
UPDATE :根据您发布的 html,如果您尝试在焦点上的每个 li 上设置属性 'aria-grabbed'。
$('#choices li a').on("focus",function(e)
{
$(this).closest('li').attr("aria-grabbed",true);
$(this).addClass("selected");
}).on("blur",function(e)
{
$(this).closest('li').attr("aria-grabbed",false);
$(this).removeClass("selected");
});
使用 DinoMyte 的方法和来自 sitepoint 网站的一些代码 http://www.sitepoint.com/accessible-drag-drop/
/***** 测试
****/
//get the collection of draggable targets and add their draggable attribute
for(var
targets = document.querySelectorAll('[data-draggable="target"]'),
len = targets.length,
i = 0; i < len; i ++)
{
targets[i].setAttribute('aria-dropeffect', 'none');
}
//get the collection of draggable items and add their draggable attributes
for(var
items = document.querySelectorAll('[data-draggable="item"]'),
len = items.length,
i = 0; i < len; i ++)
{
items[i].setAttribute('draggable', 'true');
items[i].setAttribute('aria-grabbed', 'false');
items[i].setAttribute('tabindex', '0');
}
//Place some dynamic aria roles for accessibility
$("#ch01").on("focus",function(){
$(this).attr("aria-grabbed",true);
}).on("blur",function()
{
$(this).attr("aria-grabbed",false);
});
$("#ch02").on("focus",function(){
$(this).attr("aria-grabbed",true);
}).on("blur",function()
{
$(this).attr("aria-grabbed",false);
});
$("#ch03").on("focus",function(){
$(this).attr("aria-grabbed",true);
}).on("blur",function()
{
$(this).attr("aria-grabbed",false);
});
$("#ch04").on("focus",function(){
$(this).attr("aria-grabbed",true);
}).on("blur",function()
{
$(this).attr("aria-grabbed",false);
});
//end
仍然需要清理,但这个想法可行。一次一小步,我会在你的帮助下到达那里:-)