JQuery检测标签是否自动关闭
有没有办法检测标签是否像JQuery一样自动关闭,就像图像标签一样? 动态的东西不仅仅是图像标签。
if ($('.selector')[0].tagName.toLowerCase()=="img") { // do something }
你需要区分一个空的元素和自我关闭的元素吗? 如果没有,您可以使用:
if ($(".selector").is(":empty")) { // do something }
但是,如果您正在讨论检测给定的HTML标记是否应该为空,那么您不能以编程方式执行此操作,因为您没有停止创建无效的HTML并且需要针对DTD进行validation以找出它。
jQuery在内部使用此列表:
/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i
你也可以做到的:
if(/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i.test($('.selector')[0].tagName)) { //do something }
你需要一点背景知识。 通过网络发送的HTML标记由浏览器解析为DOM树。 在这一点上,原始标记已经消失,服务于它的目的,并且不再存在。 当你对元素执行innerHTML
时,那不是生成元素的文字HTML,而是浏览器对该DOM子树的序列化。
关键是,
和
之间没有区别。 所以看看它是否有孩子。 如果没有,则元素确实具有使用自闭合标记的可能XHTML表示。
element.children().length == 0
或者正如克莱图斯所说:
element.is(":empty")
您可以检查.html()
访问器以查看它是否返回空字符串。 虽然这将在
上返回,但我会为所有意图和目的进行成像,可以将其视为自闭标签。