Javascript / Jquery if语句和hasClass

时间:2013-03-18 14:23:31

标签: javascript jquery

我有一堆不透明度为80%的图像 当我将鼠标悬停在图片上时,我会使用mouseenterfadeTo('fast' 1);将不透明度设为100%。
当我将鼠标悬停在图像上时,我会使用mouseleavefadeTo('fast' 0.8);将不透明度恢复到80%。

但是,如果我悬停在上面的图片有一个特定的类,我希望不透明度保持100%,而不是鼠标离开时更改为80%。

我试过但失败了,我希望你们能帮助我!

$(document).ready(function(){

var subject = 'null';

$('.subject').mouseenter(function(){
    if ($(this).hasClass(subject) == false) {
        $(this).find('.info').fadeTo('fast', 1);
        $(this).find('img').fadeTo('fast', 1);
    }
});
$('.subject').mouseleave(function(){
    if ($(this).hasClass(subject) == false {
        $(this).find('.info').fadeTo('fast', 0);
        $(this).find('img').fadeTo('fast', 0.8);
    }
});


$('.english-link').click(function(){
    $('.english').find('.info').fadeTo('fast', 1);
    $('.english').find('img').fadeTo('fast', 1);
    var subject = 'english';
});
$('.math-link').click(function(){
    $('.math').find('.info').fadeTo('fast', 1);
    $('.math').find('img').fadeTo('fast', 1);
    var subject = 'math';
});
$('.electives-link').click(function(){
    $('.electives').find('.info').fadeTo('fast', 1);
    $('.electives').find('img').fadeTo('fast', 1);
    var subject = 'electives';
});

});

http://jsfiddle.net/JDfpc/

4 个答案:

答案 0 :(得分:0)

您可以在淡出图片的功能上使用:not jQuery选择器,例如$('.math:not(.otherclass)').doSomething()

http://api.jquery.com/not-selector/

答案 1 :(得分:0)

当您计划淡入subject var的功能时,您必须使其全局化。

目前,您每次都使用subject重新声明var,因此在mouseentermouseleave的范围内subject已经var globals = {}; //Your global array $(document).ready(function(){ globals.subject = 'null'; //Subject is accessible everywhere in your code now ... $('.english-link').click(function(){ $('.english').find('.info').fadeTo('fast', 1); $('.english').find('img').fadeTo('fast', 1); globals.subject = 'english'; }); } 不要改变。

localStorage

有关工作示例,请参阅updated fiddle

注意:您还可以使用HTML 5 localStorage.subject = 'english'来存储{{1}}等主题。

答案 2 :(得分:0)

$(#subject).hover(function () {
      (this).fadeTo('fast', 1)
 }, function () {
      if(this).hasClass("subject") {
           (this).css('opacity','1');
      }
      else if {
           (this).fadeTo('fast',.8)
      }
    }
 });

答案 3 :(得分:-2)

您有语法错误,请尝试使用此

$('.subject').mouseenter(function(){
if (($(this).hasClass('subject')) == false) {
    $(this).find('.info').fadeTo('fast', 1);
    $(this).find('img').fadeTo('fast', 1);
  }
});

check here