Answers:
您可以通过检查从JQuery返回的第一个对象来简化此过程,如下所示:
if ($(".mydivclass")[0]){
// Do something if class exists
} else {
// Do something if class does not exist
}
在这种情况下,如果第一个([0]
)索引处存在真值,则假定存在类。
编辑04/10/2013:我在这里创建了一个jsperf测试用例。
:first
在那里将有助于性能(不知道性能是@itgorilla的重要标准),而是它是否确实变化疯狂的浏览器,大概是因为它改变了原生的功能jQuery的可以用来做选择。这是一个存在div的测试用例,这是一个不存在的测试用例。
if (!$(".mydivclass")[0]){ /* do stuff */ }
您可以使用size()
,但是jQuery建议您使用length以避免另一个函数调用的开销:
$('div.mydivclass').length
所以:
// since length is zero, it evaluates to false
if ($('div.mydivclass').length) {
更新
选定的答案使用性能测试,但由于它还包含元素选择作为性能的一部分,因此存在一些缺陷,此处未进行测试。这是更新的性能测试:
http://jsperf.com/check-if-div-exists/3
我的第一次测试表明,尽管IMO可以忽略不计,但是属性检索比索引检索更快。我仍然更喜欢使用长度,因为对于我来说,使用长度比使用更简洁的代码更有意义。
.length
当前可提供最佳的平均性能。
本机JavaScript总是会更快。在这种情况下:(示例)
if (document.querySelector('.mydivclass') !== null) {
// .. it exists
}
如果要检查父元素是否包含另一个具有特定类的元素,则可以使用以下两种方法之一。(例)
var parent = document.querySelector('.parent');
if (parent.querySelector('.child') !== null) {
// .. it exists as a child
}
另外,您可以.contains()
在父元素上使用方法。(例)
var parent = document.querySelector('.parent'),
child = document.querySelector('.child');
if (parent.contains(child)) {
// .. it exists as a child
}
最后,如果要检查给定元素是否仅包含某个类,请使用:
if (el.classList.contains(className)) {
// .. el contains the class
}
$('div').hasClass('mydivclass')// Returns true if the class exist.
div
页面上的元素,然后回去遍历它们以查看它们是否具有该类,所有这些都将在最后丢弃该数组)。
hasClass
比此处的其他选择器快33%。检查jsperf.com/hasclass00
div
元素)才可以回避我强调的问题(构建数组)。尝试一堆div:jsperf.com/hasclass00/2在我的Chrome副本上慢63%,在Firefox副本上慢43%,在Opera上慢98%(!)。但此外,有意义的是,建立一个div列表然后进行搜索要慢一些,而不是向选择器引擎提供所需的所有信息。
这是不使用Jquery的解决方案
var hasClass = element.classList.contains('class name to search');
// hasClass is boolean
if(hasClass === true)
{
// Class exists
}
参考链接
要div
明确测试元素:
if( $('div.mydivclass').length ){...}
.mydivclass
依赖于浏览器和jQuery版本要慢一些。
div
选择器部分的人。
简单的代码如下:
if ($('.mydivclass').length > 0) {
//Things to do if class exist
}
要隐藏带有Particuler ID的div:
if ($('#'+given_id+'.mydivclass').length > 0) {
//Things to do if class exist
}
以下是一些方法:
1. if($("div").hasClass("mydivclass")){
//Your code
//It returns true if any div has 'mydivclass' name. It is a based on the class name
}
2. if($("#myid1").hasClass("mydivclass")){
//Your code
// It returns true if specific div(myid1) has this class "mydivclass" name.
// It is a based on the specific div id's.
}
3. if($("div[class='mydivclass']").length > 0){
//Your code
// It returns all the divs whose class name is "mydivclass"
// and it's length would be greater than one.
}
我们可以根据需要使用上述任何一种以上定义的方式。
if ($(".mydivclass").size()){
// code here
}
该size()
方法仅返回jQuery选择器选择的元素数量-在这种情况下,该类包含元素的数量mydivclass
。如果返回0,则表达式为false,因此不存在,如果返回任何其他数字,则div必须存在。
length
属性的情况下调用方法?此外,这还会检查具有该类的任何元素,而不仅仅是a div
。(现在,这可能就是OP的意思,即使不是他/她说的话。)请参阅Stefan Kendall的回答,该回答与OP实际说的一样(即使再次,它们可能意味着您所做的事情)。
div
部件,其原因有两个:1)选择器并不局限于OP使用div
元素(将来可能会更改)的事实,以及2)大多数浏览器和jQuery,AFAIK版本,这应该更快。
length
物业是存在的,为什么不使用它?但是,如果您愿意,那就公平吧。另一方面,我不知道您已将其编辑。如果要执行此操作,则将其保留(再次,他专门说“ ...如果div带有...”(我的重点),然后另外提及是否无关紧要是div
不是,您可以放弃该部分。但是
size()
方法可以清楚地表明您正在计算jQuery选择器中的元素数量,而不仅仅是任何旧数组。但是,这只是我的偏爱。
if($(".myClass")[0] != undefined){
// it exists
}else{
// does not exist
}
var x = document.getElementsByClassName("class name");
if (x[0]) {
alert('has');
} else {
alert('no has');
}
这是Java中的检查类(hasClass)的非常示例解决方案:
const mydivclass = document.querySelector('.mydivclass');
// if 'hasClass' is exist on 'mydivclass'
if(mydivclass.classList.contains('hasClass')) {
// do something if 'hasClass' is exist.
}
用它来搜索整个页面
if($('*').hasClass('mydivclass')){
// Do Stuff
}