JQuery检测标记是否自行关闭
有没有一种方法可以检测标记是否像JQuery一样自动关闭,如图像标记?动态的东西不仅仅是一个图像标签。JQuery检测标记是否自行关闭
if ($('.selector')[0].tagName.toLowerCase()=="img") {
// do something
}
您是否需要区分空元素与自闭元素?如果没有,你可以使用:
if ($(".selector").is(":empty")) {
// do something
}
但是,如果你在谈论检测一个给定的HTML标签是否应该是空的或不,不,你不能这样做编程,因为你不是从创建无效停止HTML,你需要根据DTD进行验证才能发现。
这适用于我的目的,以上也是,但我认为这是最干净的答案。 – Hatchware 2010-02-18 21:56:47
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
}
这应该是公认的答案。 – 2016-03-01 16:28:07
您可以检查.html()
访问,看看它是否会返回一个空字符串。虽然这将在<p></p>
上返回true,但我会为所有可能被视为自闭标签的意图和目的进行成像。
你需要一点背景。通过网络发送的HTML标记由浏览器解析为DOM树。在这一点上,原始标记消失了,达到了目的,并且不再存在。在元素上执行innerHTML
时,这不是生成元素的文字HTML,而是浏览器对该DOM子树的序列化。
重点是,<div />
和<div></div>
之间没有什么不同。所以看看它是否有任何孩子。如果不是,则元素确实有有一个可能的XHTML表示,它使用自闭标记。
element.children().length == 0
或克莱说:
element.is(":empty")
'children()'不返回文本节点。正如jQuery实现它,你应该使用'element.contents()。length'而不是'element.children()。length'。 Children()返回所有子项_tag_元素。 Contents()返回所有子元素_tag_元素**加**全部node_text。例如:'$('
为什么你需要找到这一点? – cletus 2010-02-18 21:46:43
@cletus:从OP的上一个问题的茎:http://stackoverflow.com/questions/2291434/jquery-check-if-prepend-failed – Sampson 2010-02-18 21:47:24