如果用户在其中单击,我正在尝试向该元素添加一个类。
所有通常的规则都适用 - “内部”意味着它可以在孩子,孙子等中。
如果在里面,我需要添加一个类 - 如果在类之外应该删除。
我拼凑了这个有效的例子,但作为一个非JavaScript的人,我会欣赏一些关于它是否是一个合理的方法的反馈,如果它可以改进 - 通过改进,我指的是jquery / javascript性能。
任何建议表示赞赏。
$("body").click(function (e) {
$fs = $(e.target).closest("fieldset.expand");
if ($fs.length) {
$fs.addClass("focus");
}
else {
$("fieldset.expand").removeClass("focus");
}
});
<body>
<fieldset class="expand">
<input type="text" />
<input type="text" />
<input type="text" />
</fieldset>
</body>
答案 0 :(得分:0)
使用带有负值的fieldset
属性,使tabindex
可调焦(但不可标记)。然后使用focusin focusout
事件设置逻辑:
$('fieldset.expand').on('focusin focusout', function() {
$(this).toggleClass('focus', $(this).find('*').addBack().is(':focus'));
});
&#13;
fieldset.focus {
outline: 0;
background: red;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<fieldset tabindex="-1" class="expand">
<input type="text" />
<input type="text" />
<input type="text" />
</fieldset>
&#13;