检查元素在jquery中是否具有特定类不起作用

时间:2016-03-04 14:52:32

标签: javascript jquery html

我停止了一个非常简单的功能,这个功能多次与我合作但现在不能正常工作。控制台中没有特定的错误。

我正在尝试检查是否存在包含<form>类的div的特定类。我正在尝试查找是否还有其他类.form-content.inactive

我的代码如下所述

opened

点击时没有提醒。我现在傻了一段时间:p

2 个答案:

答案 0 :(得分:3)

如果您的div从一开始就没有班级opened,那么您应该这样做。

$(document).ready(function() {
     $(".form-content a").click(function(event) {
         if($('.form-content.inactive').hasClass('opened')){
            alert('has');
        } 
     });
});

否则您的代码可以正常运行..当您的div在文档准备就绪之前已经有类opened时,只有jQuery能够将您的click元素订阅到该事件。

&#13;
&#13;
$(document).ready(function() {
  if ($('.form-content.inactive').hasClass('opened')) {
    $(".form-content a").click(function(event) {
      alert('has');
    });
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-content inactive opened">
  <a>Click!</a>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您可以使用委托代替opened而不是检查{ - 1}}。

$(document).ready(function() {

  $('body').on('click', '.form-content.inactive.opened a', function(event) {
    alert('has');
  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="form-content inactive opened">
  <a>Link</a>
</div>

如果a同时包含.form-content.inactive类,则会触发.opened的点击事件。

如果您坚持使用hasClass并且您有多个.form-content,则应使用this获取最接近的.form-content并检查这两个类。

$(".form-content a").click(function(event) {

  var formContent = $(this).closest('.form-content');

  if(formContent.hasClass('inactive') && formContent.hasClass('opened')){
    alert('has');
  } 

});