检查是否存在具有特定类名的div

ava*_*tar 218 javascript jquery javascript-framework jquery-selectors

使用jQuery我是以编程方式生成一堆div这样的:

<div class="mydivclass" id="myid1">Some Text1</div>
<div class="mydivclass" id="myid2">Some Text2</div>
Run Code Online (Sandbox Code Playgroud)

在我的代码中的其他地方,我需要检测这些DIV是否存在.div的类名相同,但每个div的ID都会更改.知道如何使用jQuery检测它们吗?

Sha*_*haz 389

您可以通过检查从JQuery返回的第一个对象来简化这一过程,如下所示:

if ($(".mydivclass")[0]){
    // Do something if class exists
} else {
    // Do something if class does not exist
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果first([0])索引处存在truthy值,则假定类存在.

编辑04/10/2013:我在这里创建了一个jsperf测试用例.

  • @ThomasSebastian 尝试 `if (!$(".mydivclass")[0]){ /* do stuff */ }` (2认同)

Eli*_*Eli 102

你可以使用size(),但是jQuery建议你使用length来避免另一个函数调用的开销:

$('div.mydivclass').length
Run Code Online (Sandbox Code Playgroud)

所以:

// since length is zero, it evaluates to false
if ($('div.mydivclass').length) {
Run Code Online (Sandbox Code Playgroud)

http://api.jquery.com/size/

http://api.jquery.com/length/

UPDATE

选定的答案使用了一个perf测试,但它有一点点缺陷,因为它还包括元素选择作为perf的一部分,这不是在这里测试的.这是一个更新的性能测试:

http://jsperf.com/check-if-div-exists/3

我的第一次测试表明,属性检索比索引检索更快,尽管IMO几乎可以忽略不计.我仍然更喜欢使用长度,对于代码的意图更有意义,而不是更简洁的条件.

  • 根据您在jsperf.com上提供给该工具的链接,`.length`目前提供最佳的平均性能. (3认同)

Jos*_*ier 73

没有jQuery:

原生JavaScript总是会更快.在这种情况下:( 示例)

if (document.querySelector('.mydivclass') !== null) {
    // .. it exists
}
Run Code Online (Sandbox Code Playgroud)

如果要检查父元素是否包含具有特定类的其他元素,可以使用以下任一方法.(例)

var parent = document.querySelector('.parent');

if (parent.querySelector('.child') !== null) {
    // .. it exists as a child
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以.contains()在父元素上使用该方法.(例)

var parent = document.querySelector('.parent'),
    child = document.querySelector('.child');

if (parent.contains(child)) {
    // .. it exists as a child
}
Run Code Online (Sandbox Code Playgroud)

..最后,如果要检查给定元素是否仅包含某个类,请使用:

if (el.classList.contains(className)) {
    // .. el contains the class
}
Run Code Online (Sandbox Code Playgroud)


Hus*_*ein 55

$('div').hasClass('mydivclass')// Returns true if the class exist.
Run Code Online (Sandbox Code Playgroud)

  • 这是另一种选择,但价格昂贵.将比前面的答案中使用的方法慢(*在某些浏览器上显着*慢),并且还具有更大的内存影响(jQuery必须构建一个**所有**的'div'数组页面上的元素,然后返回并循环遍历它们以查看它们是否具有该类,最后都将数组丢弃). (3认同)
  • @tj`hasClass`比这里的其他选择器快33%.查看http://jsperf.com/hasclass00 (3认同)

Ron*_*ite 45

这是一个不使用Jquery的解决方案

var hasClass = element.classList.contains('class name to search');
// hasClass is boolean
if(hasClass === true)
{
     // Class exists
}
Run Code Online (Sandbox Code Playgroud)

参考链接


met*_*ion 16

这很简单......

if ($('.mydivclass').length > 0) {
  //do something
}
Run Code Online (Sandbox Code Playgroud)


Ste*_*all 10

div明确地测试元素:

if( $('div.mydivclass').length ){...}


Moh*_*hod 7

最好的方法是检查课程的长度,如下所示:

if ($('.myDivClass').length) {
Run Code Online (Sandbox Code Playgroud)


Jit*_*mor 6

简单的代码如下:

if ($('.mydivclass').length > 0) {
   //Things to do if class exist
}
Run Code Online (Sandbox Code Playgroud)

要隐藏具有特定ID的div:

if ($('#'+given_id+'.mydivclass').length > 0) {
   //Things to do if class exist
}
Run Code Online (Sandbox Code Playgroud)


She*_*ngh 6

这里有一些方法:

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.
    }
Run Code Online (Sandbox Code Playgroud)

我们可以根据需求使用任何一种 abobe 定义的方式。


Sha*_*ari 6

在Jquery中你可以这样使用。

if ($(".className")[0]){

   // Do something if class exists

} else {

// Do something if class does not exist

}
Run Code Online (Sandbox Code Playgroud)

使用 JavaScript

if (document.getElementsByClassName("className").length > 0) {

// Do something if class exists

}else{

    // Do something if class does not exist......

}
Run Code Online (Sandbox Code Playgroud)


小智 6

if ($("#myid1").hasClass("mydivclass")){// Do any thing}
Run Code Online (Sandbox Code Playgroud)


Aro*_*lva 5

用它来搜索整个页面

if($('*').hasClass('mydivclass')){
// Do Stuff
}
Run Code Online (Sandbox Code Playgroud)


小智 5

这是 Javascript 中检查类(hasClass)的非常示例解决方案:

const mydivclass = document.querySelector('.mydivclass');
// if 'hasClass' is exist on 'mydivclass'
if(mydivclass.classList.contains('hasClass')) {
   // do something if 'hasClass' is exist.
}
Run Code Online (Sandbox Code Playgroud)