仅将焦点事件绑定到子元素

时间:2016-03-03 01:14:42

标签: javascript jquery

我想将focus()事件仅绑定到具有特定类的div的子节点。这是我尝试过但没有工作的东西:

var boxedElements = "p,div,h1,h2,h3,h4,h5,h6,table";

    $(".myBox").find(boxedElements).focus(function () {
        var tagname = $(this).prop("tagName");
        console.log(tagname);
    });

由于某种原因,从未达到该功能。有关如何处理此问题的任何想法吗?

修改

<div class="myBox" contenteditable="true">
<h3>This is a header</h3>
<p>This is a paragraph</p>
<p>This is another paragraph</p>
</div>

现在,用户可以点击元素,或者因为其可信,可以使用键盘箭头从h3导航到第一个p元素。我希望能够发现它。

1 个答案:

答案 0 :(得分:0)

所以这就是我最终解决的问题,谢谢@Nikolay Ermakov和@mmativ

    var boxedElements = "p,div,h1,h2,h3,h4,h5,h6,table";

    $(".myBox").find(boxedElements).click(function (e) {
        var tagname = $(this).prop("tagName");
        console.log(tagname);
        e.stopPropagation();
    });

    $(".shmeditor").click(function () {
        var tagname = $(this).prop("tagName");
        console.log("other tag: " + tagname);
    });

    $(".myBox").keydown(function (e) {
        var $element = $(getSelection().getRangeAt(0).commonAncestorContainer.parentNode).closest(boxedElements);
        if ($element.hasClass("myBox")) {
            console.log("other tag: ");
        }
        else {
            console.log($element.prop("tagName"));
        }
    });