单击时将焦点更改为元素
Changing focus to an element on click
问题:
我在页面底部有一个从上到下的箭头.fa-caret-up
,希望在将箭头单击到窗口或页面左上角的徽标.logo
后更改焦点。
我现在的位置
我看到它是console.log("Does this work?")
,但当我制表时,它不是按照正常的制表顺序,它会让我在Mac屏幕阅读器中"离开HTML内容"。
scripts.js
$(function() {
// This plays videos on click, so beautiful
$("video").click(function (e) {
if(e.offsetY < ($(this).height() - 36)) // Check to see if controls where clicked
{
if(this.paused)
this.play();
else
this.pause();
}
});
// Smooth scroll like butter
$('a[href*=#]:not([href=#])').click(function() {
if (location.pathname.replace(/^'//,'') == this.pathname.replace(/^'//,'') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
if (target.length) {
$('html,body').animate({
scrollTop: target.offset().top
}, 1000);
return false;
}
}
});
// FOR IMAGES
// Needs fixing but on the right track
// var fadeImg = $("img").fadeTo(0, 0);
// $(window).scroll(function() {
// fadeImg.each(function(i) {
// a = $(this).offset().top + $(this).height();
// b = $(window).scrollTop() + $(window).height();
// if (a < b) $(this).fadeTo(500,1);
// });
// });
// Accessibility consideration, change focus from nav to header in story on click
$('.chp1').click(function (evt){
$("#1").focus();
evt.preventDefault();
});
$('.chp2').click(function (evt){
$("#2").focus();
evt.preventDefault();
});
$('.chp3').click(function (evt){
$("#3").focus();
evt.preventDefault();
});
$('.chp4').click(function (evt){
$("#4").focus();
evt.preventDefault();
});
$('.chp5').click(function (evt){
$("#5").focus();
evt.preventDefault();
});
$('.fa-caret-up').click(function (){
$('.logo').focus();
console.log("Does this work?");
});
// If mouse hovers over "Reading section", change two elements to yellow
$('.reading').mouseover(function(){
$('.fa-clock-o').addClass('yellow');
$('.min').addClass('yellow');
});
// If mouseout, then change back to default colour
$('.reading').mouseout(function(){
$('.fa-clock-o').removeClass('yellow');
$('.min').removeClass('yellow');
});
// If mouse hovers over "Listen section", change two elements to yellow
$('.listen').mouseover(function(){
$('.fa-headphones').addClass('yellow');
$('.lis').addClass('yellow');
});
// If mouseout, then change back to default colour
$('.listen').mouseout(function(){
$('.fa-headphones').removeClass('yellow');
$('.lis').removeClass('yellow');
});
});
index.html
<nav>
<div class="navGroup">
<a href="http://brandonsun.com" target="_blank"><img src="assets/img/branding/sq.png" alt="Brandon Sun logo. Click this image to go to the main site." class="logo"></a>
<p class="featureTitle" tabindex="0" role="heading">Asbestos</p>
<ul>
<a href="#1" tabindex="0" class="chp1"><span class="acc">Chapter 1: Name of Chapter.</span><li>1</li></a>
<a href="#2" tabindex="0" class="chp2"><span class="acc">Chapter 2: Name of Chapter.</span><li>2</li></a>
<a href="#3" tabindex="0" class="chp3"><span class="acc">Chapter 3: Name of Chapter.</span><li>3</li></a>
<a href="#4" tabindex="0" class="chp4"><span class="acc">Chapter 4: Name of Chapter.</span><li>4</li></a>
<a href="#5" tabindex="0" class="chp5"><span class="acc">Chapter 5: Name of Chapter.</span><li>5</li></a>
</ul>
</div><!-- /.navGroup -->
</nav>
<footer>
<div class="thanks">
<p class="credits" tabindex="0">
Photographer: <span class="bold" alt="Bruce Bumstead">Bruce Bumstead</span><br>
Reporter: <span class="bold" alt="Matt Goerzen">Matt Goerzen</span><br>
Developer: <span class="bold" alt="and Andrew Nguyen">Andrew Nguyen</span>
</p>
</div><!-- /.thanks -->
<a href="#" id="#" tabindex="0"><span class="acc">Go back to the top of the article</span><i class="fa fa-caret-up fa-2x" ></i></a>
</footer>
Brandon boone对问题的诊断是正确的,然而,我会将解决方案更改为关注图像周围的锚点,因为这已经是自然可聚焦的,并且考虑到它可以与之交互,你无论如何都想关注什么。
将代码更改为:
$('.fa-caret-up').click(function (){
$('.logo').parent().focus();
console.log("Does this work?");
});
您只能使用tabindex来聚焦元素。在您的情况下,尝试聚焦节点<img class='logo' />
失败,因为它没有默认的选项卡索引。将tabindex='0'
添加到元素将允许您成功地.focus()
元素。
<img src="assets/img/branding/sq.png" alt="Brandon Sun logo. Click this image to go to the main site." class="logo" tabindex="0">
更多信息:哪些HTML元素即使使用tabindex也不可选项卡化?
相关文章:
- 单击时将焦点更改为元素
- 检查元素是如何获得焦点的
- 单击其他元素或鼠标向上时隐藏输入框,但保留一次焦点
- 将焦点移动到页面元素
- 如何使元素在按下按钮时不会失去焦点
- 将焦点设置为输入元素角度 js
- 遍历 DOM 以查找哪个元素具有焦点
- 如何仅在输入元素具有焦点时才启动 setInterval
- jQuery网站的键盘快捷键,焦点使用左键和右键转到上一个或下一个元素
- 如何检查焦点是否离开了一组元素
- 键盘没有在Android和BlackBerry中显示元素焦点
- 焦点和一个元素应该反映到CSS中的另一个元素
- 如何在iOS中对输入元素使用Jquery:焦点选择器
- EaselJS / canvas在拖放过程中更改元素焦点
- 使用javascript / jquery更改元素焦点(单击)上的输入/文本区域样式表
- 角度形式 - 元素焦点
- 防止元素焦点丢失(需要跨浏览器解决方案)
- 全局元素焦点监听器
- 在Angularjs中,作用域值在表单的元素焦点上重置
- 通过JS选择伪元素:焦点和:活动