【发布时间】:2012-10-09 02:17:29
【问题描述】:
我在 div 上使用 jQuery 自动完成功能,但我得到了由 jquery 自动添加的额外跨度
"<span role="status" aria-live="polite" class="ui-helper-hidden-accessible">search test</span>"
如何防止创建此跨度?
【问题讨论】:
标签: javascript jquery
我在 div 上使用 jQuery 自动完成功能,但我得到了由 jquery 自动添加的额外跨度
"<span role="status" aria-live="polite" class="ui-helper-hidden-accessible">search test</span>"
如何防止创建此跨度?
【问题讨论】:
标签: javascript jquery
我通过添加 CSS 规则解决了这个问题:
.ui-helper-hidden-accessible { display: none; }
【讨论】:
.ui-helper-hidden-accessible{@extend .sr-only;} 添加到您的 framework_and_overrides.css.scss 文件中。现在 Foundation 中可能也有类似的东西......
出于可访问性的原因,盲人可以“阅读”找到多少结果。如果实在想删,可以修改源码:
this.liveRegion = $( "<span>", {
role: "status",
"aria-live": "polite"
})
.addClass( "ui-helper-hidden-accessible" )
.insertAfter( this.element );
但不推荐。
【讨论】:
我使用 CSS flex box 进行带有 nth-child 选择器的布局,因此,这个跨度扭曲了我的列布局。
display: none 或 position: absolute; top: -999999 无法解决我的问题。我不得不从 DOM 中完全删除该元素,因此,我编写了以下 create event 处理程序:
create: function (e)
{
e.target.parentElement.removeChild(e.target.parentElement.querySelector(".ui-helper-hidden-accessible"));
}
【讨论】:
您可以通过将此事件处理程序添加到您的自动完成来摆脱它:
$(element).autocomplete({
...
create: function (e) {
$(this).prev('.ui-helper-hidden-accessible').remove();
}
});
除非您关心盲人访问我们的页面,否则删除它并没有什么坏处。我尝试了display: none 技巧,但这对我不起作用。
【讨论】:
你真的不应该删除这个(你想浏览一个仅供盲人使用的网页并且你无法访问内容吗?)...
要使网站符合 ada 标准并不容易。 这个跨度只是所有这些东西的一小部分。
隐藏不显示或不显示的元素对于 ada 来说是一种不好的做法。 这就是为什么像 facebook 这样的页面通过缩进到屏幕外的某个地方来隐藏一些元素:
display:none vs visibility:hidden vs text-indent:9999 How screen reader behave with each one?
对于与 ada 相关的内容,您可以从这里开始: http://www.techrepublic.com/blog/web-designer/creating-an-ada-compliant-website/
也许在这种情况下将高度强制为 0 可能有用...
【讨论】:
添加 .css 文件对我有用(当然删除所有 span 元素也有效,但这不是一个好的解决方案):
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css" />
【讨论】:
这将完美地工作:
$(document).ready(function(){ $("span").remove(); });
【讨论】:
HTML DOM