我编写了一个非常简单的函数来检查标记类名。
我使用.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)"
}
答案 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>