如何检测html元素是否可以附加子节点?

dem*_*sus 12 javascript jquery

我在我的应用程序中创建了一个名为"loading"的自定义jquery事件.当触发此事件时,我想要使用微调器附加一个masking元素.我可以找出那个没有问题的部分.但是,某些元素(图像,表单输入等)不能附加子元素.我需要能够检测此事件的目标是否可以接收子元素.如果它不能,那么我将把微调器和蒙版添加到它的父元素.

jas*_*pet 5

你必须检查名称:

/*global $, jQuery */

function isVoid(el) {
    var tags = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input',
                 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'],
        i = 0,
        l,
        name;

    if (el instanceof jQuery) {
        el = el[0];
    }

    name = el.nodeName.toLowerCase();

    for (i = 0, l = tags.length; i < l; i += 1) {
        if (tags[i] === name) {
            return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

var el = document.getElementById('el'),
    elj = $('#el');

if (!isVoid(el)) {
    // append
}
Run Code Online (Sandbox Code Playgroud)