.hasClass不在onclick函数内部工作,但删除并添加类函数

时间:2016-05-06 07:44:01

标签: javascript jquery

$(document).ready(function(){


$('#vDets').on('mouseover',function(){
             $('#vDets').removeClass("SelectDef").addClass("SelectHov");

 });
$('#vDets').on('mouseout',function(){
             $('#vDets').removeClass("SelectHov").addClass("SelectDef");
 });
 $("#vDets").on('click',function(){              
            $('#vDets').removeClass("SelectDef").addClass("SelectTick");
             var boolCheck = $("#vDets").hasClass("SelectDef");


 });
});

我遇到上面的代码有问题,hasClass不在onclick函数内部但是会抛出错误

未捕获的TypeError:$(...)。hasClass不是函数

在内部使用时,尽管函数removeClass和addClass都可以工作。

我以前多次使用过hasClass,从未遇到过这个问题

1 个答案:

答案 0 :(得分:0)

嗯,我刚试过它,一切似乎都很好 jsfiddle - click.

JS:

$(document).ready(function(){


$('#vDets').on('mouseover',function(){
             $('#vDets').removeClass("SelectDef").addClass("SelectHov");

 });
$('#vDets').on('mouseout',function(){
             $('#vDets').removeClass("SelectHov").addClass("SelectDef");
 });
 $("#vDets").on('click',function(){              
            $('#vDets').removeClass("SelectDef").addClass("SelectTick");
            //those run after click
            var boolCheck1 = $("#vDets").hasClass("SelectDef");
            var boolCheck2 = $("#vDets").hasClass("SelectHov");
                        $('#result1').text( boolCheck1 );
            $('#result2').text( boolCheck2 );
 });
 //run outside function without click
 $('#result1').text( $("#vDets").hasClass("SelectDef") );
 $('#result2').text( $("#vDets").hasClass("SelectHov") );
});

HTML:

<div id="vDets" class="SelectDef">
click me
</div>
result for SelectDef:
<div id="result1">

</div>
result for SelectHov:
<div id="result2">

</div>

您是否尝试使用boolCheck外部功能?它在外面是不可用的:)

编辑:你不能在这里删除课程:

 $("#vDets").on('click',function(){              
            $('#vDets').removeClass("SelectDef").addClass("SelectTick");

因为当你想点击它时会SelectHov

$('#vDets').on('mouseover',function(){
             $('#vDets').removeClass("SelectDef").addClass("SelectHov");

 });