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