Jquery检查是否在元素内部

时间:2015-09-30 09:34:26

标签: javascript jquery

如果用户在其中单击,我正在尝试向该元素添加一个类。

所有通常的规则都适用 - “内部”意味着它可以在孩子,孙子等中。

如果在里面,我需要添加一个类 - 如果在类之外应该删除。

我拼凑了这个有效的例子,但作为一个非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>

1 个答案:

答案 0 :(得分:0)

使用带有负值的fieldset属性,使tabindex可调焦(但不可标记)。然后使用focusin focusout事件设置逻辑:

&#13;
&#13;
$('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;
&#13;
&#13;

相关问题