JQuery检测标签是否自动关闭

时间:2010-02-18 21:42:00

标签: jquery

有没有办法检测标签是否像JQuery一样自动关闭,就像图像标签一样?动态的东西不仅仅是图像标签。

if ($('.selector')[0].tagName.toLowerCase()=="img") {
    // do something
}

4 个答案:

答案 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>上返回,但我会为所有意图和目的进行成像,可以将其视为自闭标签。