2
4

6 回答 6

8

您可以将其简化为单个选择器.find("b,i,u")并返回布尔比较length > 0<b><i><u>如果在里面找到任何标签#item,总长度将为> 0

return $("#item").find("b,i,u").length > 0;

概念证明

编辑:如果你真的想要一个number零或一个而不是boolean,请使用三元:

return $("#item").find("b,i,u").length > 0 ? 1 : 0;
于 2012-08-21T16:54:59.010 回答
5
return document.querySelector("#item b, #item u, #item i") ? 1 : 0;

不需要 jQuery。

如果您需要支持 IE7 及更早版本的浏览器,请尝试以下操作:

var elem = document.getElementById('item');
return elem.getElementsByTagName('b').length
     + elem.getElementsByTagName('i').length
     + elem.getElementsByTagName('u').length == 0 ? 0 : 1;
于 2012-08-21T16:56:11.803 回答
4

也许使用该.has()方法。

$('li').has('ul')

jQuery有

于 2012-08-21T16:56:47.183 回答
3

你也可以用 .has() 函数来做到这一点

于 2012-08-21T16:57:15.440 回答
0

我不确定它是最有效的,但我会使用.find它。

function hasInline(targetElement) { 
  return ($(targetElement).find('b,u,i').length > 0); 
}

我还建议扩展该功能,以便您可以指定要检查的任何内联标签,如下所示:

// NOTE: This will return true if the element has ANY of the tags provided.
function hasInlineTags(targetElement, listOfTags) { 
  return ($(targetElement).find(listOfTags.join(',')).length > 0); 
}

// Call it with whatever tags you want.
hasInlineTags($("div#item"), ['b','u','i']);
于 2012-08-21T17:14:52.027 回答
0

如果您使用的是 jQuery:

var styleElements = $('b,u,i', $list)

采用:

return (styleElements.length) ? 1 : 0;
于 2012-08-21T17:19:19.717 回答