本文介绍了如何检测html元素是否可以附加子节点?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在我的应用程序中创建了一个名为loading的自定义jquery事件。当触发此事件时,我想要使用微调器附加一个masking元素。我可以找出那个没有问题的部分。但是,某些元素(图像,表单输入等)不能附加子元素。我需要能够检测此事件的目标是否可以接收子元素。如果它不能,那么我将添加微调器&掩饰到它的父元素。
I created a custom jquery event called 'loading' in my application. I want to append a masking element with a spinner, when this event is triggered. I can figure out that part without problems. However, some elements (images, form inputs, etc..) cannot append child elements. I need to be able to detect if the target of this event can receive child elements. If it cannot, then I will add the spinner & mask to it's parent element.
推荐答案
你必须检查名称:
/*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;
}
并按如下方式使用:
var el = document.getElementById('el'),
elj = $('#el');
if (!isVoid(el)) {
// append
}
这篇关于如何检测html元素是否可以附加子节点?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!