[英]Select element in Jquery selector by class name and convert it back to Jquery object
[英]'Does not have class' selector in jQuery. Select an element by particular class name which holds multiple classes
我想通过特定的类名选择一个元素(该元素包含多个类)。 我已经参考了这个答案,但对我不起作用。
<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
内部的自定义类。
Javascript代码:
$("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")
}
}
两种实现都不起作用。 如果你知道为什么,请告诉我。
您没有正确捕获this
引用,箭头符号不能使用隐式this
引用,避免将它与jQuery
:
箭头函数表达式的语法比函数表达式短,并且没有自己的
this
、arguments
、super
或new.target
。 这些函数表达式最适合非方法函数,它们不能用作构造函数。
我已经重新编写了您的代码,因此它可以按您的预期工作:
$("i").click(function() { changeColor($(this)); }); const changeColor = (obj) => { if (!obj.hasClass('clicked')) console.log('not clicked class'); }
.as-console {background-color:black !important; color:lime;} .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>
您可以使用event.currentTarget
而不是提到this
:
$("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。
您可以尝试使用element.is('.clicked')
吗? 你可以尝试用多台组合IS
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.