检查 div ClassName 的简单 jQuery 函数

Posted

技术标签:

【中文标题】检查 div ClassName 的简单 jQuery 函数【英文标题】:Simple jQuery function to check the div ClassName 【发布时间】:2018-05-09 22:37:22 【问题描述】:

我写了一个非常简单的函数来检查标签类名。 我使用 .attr() 将它附加到 div 上,提醒似乎没有问题。

但是,$(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)"

【问题讨论】:

【参考方案1】:

你必须把它传递给函数,因为$(this) = window;

请试试这个:

$("div.testing").attr('onclick', 'checkClass(this)');
function checkClass(e)
  alert( e.className);
  // what do something more with e, this is you clicked element

【讨论】:

对于使用 JQuery,只需将 $(this) 更改为 $(e) 就很方便。非常简单的方法来解决这个问题,非常感谢。【参考方案2】:

尝试通过以下方式实现它,您的代码将在警报中输出undefined,因为this 引用checkClass() 函数而不是您尝试定位的元素, 看下面的demo,你应该学习如何制作一个简单的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>

【讨论】:

【参考方案3】:

虽然 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>

【讨论】:

以上是关于检查 div ClassName 的简单 jQuery 函数的主要内容,如果未能解决你的问题,请参考以下文章

当元素具有多个类时如何在 switch 语句中检查 className

如何在Ext.select('。classname')中获取一个类名,并从内部删除一个div-EXTJS

css 文件中的 div.classname

JS通过ClassName禁止DIV点击

将 innerHTML 更改为由其 ClassName 捕获的 div 的 Id 的值

Javascript-className与classList的区别