简单的jQuery函数来检查div ClassName

时间:2017-11-26 16:15:51

标签: jquery classname

我编写了一个非常简单的函数来检查标记类名。 我使用.attr()将它附加到div(s),警报似乎没问题。

但是,$(this).attr('class')无法显示正确的类名,只显示

  

"未定义"

。 实际上,我有更多的事情想要$(this),所以我一开始就停下来真是太糟糕了。

有人会告诉我为什么会这样,以及如何解决这个问题?

<div class="testing class1" >Something here</div>
<div class="testing class2" >Something here</div>    
<script>

$("div.testing").attr('onclick', 'checkClass()');

function checkClass(){
  alert( $(this).attr('class'));
  // what do something more with "$(this)"
}

2 个答案:

答案 0 :(得分:0)

尝试按以下方式实现它,您的代码将在警报内输出undefined因为this引用checkClass()函数而不是您尝试定位的元素, 请参阅下面的演示,您应该学习如何制作一个简单的plugin

$.fn.checkClass = function() {
  $(this).on('click', function() {
    console.log($(this).attr('class'));
  });
}
$("div.testing").checkClass();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="testing class1">Something here</div>
<div class="testing class2">Something here</div>

答案 1 :(得分:0)

虽然jQuery有自己的方法来从/向元素添加/删除类,但枚举什么都没有。所以你应该使用原生的js方法。

var checkClass = e => {
  alert(e.target.classList)
}

$("div.testing").click(checkClass)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="testing class1" >Something here</div>
<div class="testing class2" >Something here</div>