此问题涉及THIS PAGE上的主(标题)导航菜单。
单击“服务”下拉子菜单中的任何项目时,我希望打开“服务”页面(在现有浏览器窗口中),并在“服务”页面上打开特定锚标签元素成为焦点。我已经做到了这一点。但是,当目标锚标签处于焦点时,我希望它的行为就像在其父div上执行的手动鼠标悬停一样,即应该对应于焦点元素的文本向下滑动。 对于手动演示,请转到HERE并将鼠标悬停在其中一个垂直列表项上 - 文本将向下滑动到列表右侧。
“服务”子菜单链接的HTML:
<li> <a href="services.html#collabSol" class="pagefade" onclick="var w=window.open(this.href, '_self'); w.focus();">collaborative law</a></li>
目标“a”标记及其父div的HTML(即应该关注“服务”页面的“a”标记):
<div id="mylist1"><h3><a href="" id="myTag1" name="collabSol">Collaborative Solutions</a></h3></div>
用于驱动焦点“a”标记及其父div的悬停行为的脚本:
//fades in desired text after fading out whatever text is already displayed:
$(document).ready(function() {
$('#mylist1').mouseover(function() { //note first list item must be called mylist1 to avoid conflict with other code
if ( !$('#text1').is(":visible") ) { //prevents re-display if desired text already displayed
$(".shownText").slideUp(100).removeClass('.shownText');
$('#text1').slideDown(300, 'linear');
}
});
//capture click events as well:
/* $('#mylist1').click(function() {
if ( !$('#text1').is(":visible") ) { //prevents re-display if desired text already displayed
$(".shownText").slideUp(100).removeClass('.shownText');
$('#text1').slideDown(300, 'linear');
}
});*/
//capture focus events on <a> as well:
$('#myTag1').focus(function() {
if ( !$('#text1').is(":visible") ) { //prevents re-display if desired text already displayed
$(".shownText").slideUp(100).removeClass('.shownText');
$('#text1').slideDown(300, 'linear');
}
});
});
请注意,主导航菜单是使用jquery通过Dreamweaver扩展创建的。
到目前为止我所拥有的:
当“服务”页面打开时,正确的目标处于焦点(如浏览器地址栏所示)。但是,此焦点不会触发预期的文本滑动事件。当我点击标签时,下一个列表div成为焦点(正如预期的那样)&amp;发生适当的文本下滑。
我希望过多吗?我是否误解了“关注焦点”的局限性?“霍瑟姆山今年是否会有一个杀手级的雪季? 您的圣人建议非常受欢迎! 柯克
答案 0 :(得分:0)
我不确定你对“聚焦”的使用是我所期望的......在网址中有一个片段并不一定会关注该元素,它只是将显示向下移动到它。我认为它适用于tabbing的原因是tabbing确实关注元素,我假设它从已滚动到的元素开始。
我建议将显示脚本分解为命名函数(因此可以在其他地方使用),然后在页面加载时,您可以从URL中提取片段(例如#famLaw)。使用该片段,您应该能够在页面上找到正确的元素并将其聚焦。
还应该注意的是,将显示文本拉入单独的功能具有整合代码的优势 - 您基本上复制了onfocus和onready事件中的代码,因此将其分解可以更容易地进行维护和重用。 :)
P.S。我想对Mt Hotham来说是的。我以前从未听说过,但我会乐观。