问题
如何在所有浏览器中为点击它或标签的人显示隐藏的div(由单选按钮触发)显示/隐藏(Safari是我的问题)。
故事
我有一个html表单,隐藏的div分散在各处以隐藏在某些情况下可能不需要询问的问题。大多数隐藏的div都是由单选按钮触发的,所以我决定构建以下脚本。我使用.on("焦点")所以隐藏的字段适用于人们在表单中的标签。
$("#loan-application").on("focus","input.toggler,span.toggler", function(){
var $show = ($(this).data("show")) ? $($(this).data("show")) : false,
$hide = ($(this).data("hide")) ? $($(this).data("hide")) : false;
if($show){
$show.stop(true).show({animation: "blind", duration: 1000}).addClass("active");
if($show.data("validate")) $show.find(":visible:input.mandatory").addClass("required");
}
if($hide){
$hide.not($show).each(function(){
var $this = $(this);
$this.stop(true).hide({animation: "blind", duration: 1000}).removeClass("active");
($this.data("validate")) ? $this.find(":input.mandatory").removeClass("required") : $this.find(":input.mandatory").addClass("required");
resetForm($this);
});
}
});
此代码在除Safari之外的所有浏览器中完成任务。如果在Safari中单击单选按钮,则它不会被视为焦点"并且未显示隐藏字段。所以我尝试将事件切换为.on("点击焦点")哪种作品;但是,如果在先前隐藏的div中有其他隐藏的div,则附加div的内容将在父级之外扩展到其他文本中,因为父级高度不会随着其他隐藏的div而改变。
答案 0 :(得分:0)
您可以创建click
处理程序集焦点。
在click
处理程序中,您可以使用document.activeElement
来确定元素是否已经具有焦点。