我引用了this answer,但对我没有用。
我想从包含多个类的元素中选择一个特定的类名称。
<i class="fas fa-star fa-lg clicked"></i>
<i class="fas fa-star fa-lg"></i>
<i class="fas fa-star fa-lg"></i>
clicked
是一个自定义类,其中包含color:red
。
JS文件:
$("i").click(()=> {
changeColor();
})
const changeColor = () => {
if (!$(this).hasClass('clicked')){
console.log('not clicked class')
}
}
或
const changeColor = () => {
if ($("i:not(.clicked)")){
console.log("no clicked class")
}
}
两者均无效。如果您知道为什么,请告诉我。
答案 0 :(得分:3)
您没有正确捕获java HelloWorld.java
,箭头符号不能使用隐式this
引用,请避免与this
一起使用:
箭头函数表达式的语法比函数表达式短,并且没有自己的this,arguments,super或new.target。这些函数表达式最适合非方法函数,因此不能用作构造函数。
我对您的代码进行了重新整理,使其可以按您期望的方式工作:
JQuery
$("i").click(function()
{
changeColor($(this));
});
const changeColor = (obj) =>
{
if (!obj.hasClass('clicked'))
console.log('not clicked class');
}
.clicked {
color: red;
}
答案 1 :(得分:0)
您可以尝试使用element.is('.clicked')
吗?您可以使用is
答案 2 :(得分:0)
您可以使用this
代替event.currentTarget
:
$("i").click(function(event)
{
changeColor($(event.currentTarget));
});
const changeColor = ($element) =>
{
if (!$element.hasClass('clicked'))
console.log('not clicked class');
}
.clicked {
color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<i class="fas fa-star fa-lg clicked">Button 1</i>
<i class="fas fa-star fa-lg">Button 2</i>
<i class="fas fa-star fa-lg">Button 3</i>
在代码中使用this
可能会造成混淆,因为您需要充分了解其工作原理。因此,许多人倾向于不使用它。
请记住,我将obj
重命名为$element
。我强烈建议使用$
前缀来表明此变量包含jQuery。