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

281

我正在使用 jQuery 动态生成一堆像这样的 div

<div class="mydivclass" id="myid1">Some Text1</div>
<div class="mydivclass" id="myid2">Some Text2</div>

我的代码中的其他地方需要检测这些DIV是否存在。这些div的类名相同,但每个div的ID都会更改。有什么想法可以使用jQuery进行检测吗?

20个回答

6
在JQuery中,您可以这样使用。
if ($(".className")[0]){

   // Do something if class exists

} else {

// Do something if class does not exist

}

使用JavaScript

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

// Do something if class exists

}else{

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

}

6
if ($("#myid1").hasClass("mydivclass")){// Do any thing}

1
请对你的答案进行一些解释。 - executable

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.
}

5

使用此功能可以搜索整个页面

if($('*').hasClass('mydivclass')){
// Do Stuff
}

4
检查是否存在具有特定类的div。
if ($(".mydivclass").length > 0) //it exists 
{

}

4
if($(".myClass")[0] != undefined){
  // it exists
}else{
  // does not exist
}

2
看起来几乎与这个现有答案完全相同。 - Pang
是的,但我尝试了那个答案,它没有起作用。当我将比较添加到“未定义”时,它似乎完美地工作了。 - stairie
这可能会更快。+1。 - chirag p

4
最好的方法在Javascript中是:
if (document.getElementsByClassName("search-box").length > 0) {
// do something
}

3
var x = document.getElementsByClassName("class name");
if (x[0]) {
alert('has');
} else {
alert('no has');
}

虽然这段代码可能回答了问题,但是提供关于为什么和/或如何回答问题的额外上下文可以提高其长期价值。 - Vishal Chhodwani

3
if ($(".mydivclass").size()){
   // code here
}
size()方法只返回jQuery选择器选择的元素数,这里是指具有mydivclass类的元素数。如果返回0,则表示表达式为假,因此没有任何元素;如果返回任何其他数字,则表示div存在。

2
为什么要调用方法,而不是使用“length”属性?此外,这将检查具有该类的任何元素,而不仅仅是一个“div”。(现在,即使不是他/她所说的内容,这可能就是OP的意思。)请参见Stefan Kendall的答案,它执行了OP实际上所说的内容(尽管他们可能意味着你所做的事情)。 - T.J. Crowder
1
@T.J. Crowder:嗯,这只是个人口味 - 我只是觉得size()方法在那里 - 为什么不用呢。调用函数的额外开销(除非你在循环中执行1000次)非常小,我宁愿选择代码的清晰度。关于你的第二点 - 是的,我改变了我的原始答案以删除div部分,原因有两个:1)选择器并不局限于OP使用div元素的事实(它可能会在未来发生变化),2)在大多数浏览器和jQuery版本中,据我所知,这应该更快。 - Herman Schaaf
“我只是觉得 size() 方法已经在那里了,为什么不用呢?”好的,length 属性也在那里,为什么不用呢?但如果这是你的偏好,那也没问题。另外,我不知道你把它编辑掉了。如果我要这样做,我会把它留下来(再次强调,他明确说过“…如果 div 包含…”(我的强调),然后还提到如果不管是不是 div,都可以放弃该部分。但无论如何 :-)。” - T.J. Crowder
@T.J. Crowder:是的,我认为我们想得太多了。 - Herman Schaaf
@T.J. Crowder:但是为了辩护,虽然这不是讨论的地方:我觉得size()方法存在是为了清楚地表明您正在计算jQuery选择器中的元素数量,而不仅仅是任何旧数组。但再次强调,这只是我的个人偏好。 - Herman Schaaf

1

jQuery(function($){
  $("#btn1").click(function(){
      if($(this).hasClass("demo")){
            alert("HAS");
      } else {
        alert("NO HAS");
      }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="btn1" class="demo">Show Text</button>


你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人能够确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community
你的回答可以通过提供更多的支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接