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()访问器以查看它是否返回空字符串。 虽然这将在

上返回,但我会为所有意图和目的进行成像,可以将其视为自闭标签。