jQuery如果DIV没有类"x"

zuk*_*uk1 208 jquery

在jQuery中,我需要做一个if语句来查看$ this是否包含类'.selected'.

$(".thumbs").hover(function(){

$(this).stop().fadeTo("normal", 1.0);
},function(){
$(this).stop().fadeTo("slow", 0.3);

});
Run Code Online (Sandbox Code Playgroud)

基本上当运行这个函数时(在悬停时)我不想执行淡入淡出,如果已将类'.selected'附加到div,这将意味着图像将完全不透明以表示它已被选中.在谷歌搜索没有运气,即使这是一个如何使用IF声明的简单问题...

alp*_*ogg 352

使用"not "选择器.

例如,而不是:

$(".thumbs").hover()

尝试:

$(".thumbs:not(.selected)").hover()


Rus*_*Cam 178

jQuery有hasClass()函数,如果包装集中的任何元素包含指定的类,则返回true

if (!$(this).hasClass("selected")) {
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

看看我的使用示例

  • 如果你将鼠标悬停在一个div上,如果div不包含'selected'类,它会以正常速度衰减到100%不透明度
  • 如果你将鼠标悬停在一个div之外,如果div不包含'selected'类,它会以低速度消失为30%不透明度
  • 单击该按钮可将"选定"类添加到红色div.褪色效果不再适用于红色div

这是它的代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
<title>Sandbox</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<style type="text/css" media="screen">
body { background-color: #FFF; font: 16px Helvetica, Arial; color: #000; }
</style>


<!-- jQuery code here -->
<script type="text/javascript">
$(function() {

$('#myButton').click(function(e) {
$('#div2').addClass('selected');
});

$('.thumbs').bind('click',function(e) { alert('You clicked ' + e.target.id ); } );

$('.thumbs').hover(fadeItIn, fadeItOut);


});

function fadeItIn(e) {
if (!$(e.target).hasClass('selected')) 
 { 
    $(e.target).fadeTo('normal', 1.0); 
  } 
}

function fadeItOut(e) { 
  if (!$(e.target).hasClass('selected'))
  { 
    $(e.target).fadeTo('slow', 0.3); 
 } 
}
</script>


</head>
<body>
<div id="div1" class="thumbs" style=" background-color: #0f0; margin: 10px; padding: 10px; width: 100px; height: 50px; clear: both;"> 
One div with a thumbs class
</div>
<div id="div2" class="thumbs" style=" background-color: #f00; margin: 10px; padding: 10px; width: 100px; height: 50px; clear: both;">
Another one with a thumbs class
</div>
<input type="button" id="myButton" value="add 'selected' class to red div" />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

编辑:

这只是猜测,但你想要实现这样的目标吗?

  • 两个div都以30%的不透明度开始
  • 将鼠标悬停在100%的不透明度上,徘徊在30%的不透明度上.淡化效果仅适用于没有"选定"类的元素
  • 单击div可添加/删除"已选择"类

jQuery代码在这里 -

$(function() {

$('.thumbs').bind('click',function(e) { $(e.target).toggleClass('selected'); } );
$('.thumbs').hover(fadeItIn, fadeItOut);
$('.thumbs').css('opacity', 0.3);

});

function fadeItIn(e) {
if (!$(e.target).hasClass('selected')) 
 { 
    $(e.target).fadeTo('normal', 1.0); 
  } 
}

function fadeItOut(e) { 
  if (!$(e.target).hasClass('selected'))
  { 
    $(e.target).fadeTo('slow', 0.3); 
 } 
}

<div id="div1" class="thumbs" style=" background-color: #0f0; margin: 10px; padding: 10px; width: 100px; height: 50px; clear: both; cursor:pointer;"> 
One div with a thumbs class
</div>
<div id="div2" class="thumbs" style=" background-color: #f00; margin: 10px; padding: 10px; width: 100px; height: 50px; clear: both; cursor:pointer;">
Another one with a thumbs class
</div>
Run Code Online (Sandbox Code Playgroud)


小智 27

我认为作者正在寻找:

$(this).not('.selected')
Run Code Online (Sandbox Code Playgroud)

  • 它有效,但值得注意的是,它不能作为布尔值,因为它返回一个数组.空数组在Javascript中是"真实的".如果你真的想要,可以使用`$(this).not('.selected').length`作为布尔值,但这有点冗长. (3认同)

And*_*rew 5

当你检查一个元素是否有一个类时,确保你没有不小心在类名中放了一个点:

<div class="className"></div>

$('div').hasClass('className');
$('div').hasClass('.className'); #will not work!!!!
Run Code Online (Sandbox Code Playgroud)

在长时间盯着我的代码之后,我意识到我已经做到了。像这样的一个小错字花了我一个小时才弄清楚我做错了什么。检查您的代码!