2015-10-26 68 views
0

下面是我的代码,我试图让内容包裹在div标签中,当鼠标诅咒它时,如果其中一个内容的变量以*开头,则会更改背景颜色。但它不工作...ng-mouseover ng-mouseout not woking

// html 

<style> 
.normal{background-color: white} 
.change{background-color: gainsboro} 
</style> 

<div ng-mouseover="checkAs(this)" ng-mouseout="this.className='normal'"> 
...... 
</div> 

// js 

$scope.checkAs = function(obj) { 
     var name = $scope.opportunity.name; 
     var asterisk = '*'; 
     if(name.startsWith(asterisk)) { 
      obj.className='change'; 
     } else { 
      obj.className='normal'; 
     } 
    }; 
+1

本'in'checkAs(this)'不会是DOM元素,而是它的范围本身。不用直接设置className,你可以查看ng类的文档,了解如何使用它。你也可以使用css:hover伪类来实现这一点。还要注意鼠标悬停/鼠标悬停事件并且mouseenter/mouseleave不会。 – PSL

回答

1

如果你下定决心要做到这一点 - 在角度,你必须通过调用NG-鼠标悬停在该函数的功能,你需要选择,例如JQueryJavascript's query selector,然后按照您认为合适的方式修改元素。你将不得不做这样的事情(使用JQuery):

$scope.checkAs = function() { 
     $("div").hover(function() { 
      $(this).prop('background-color','gainsboro'); 
     }, function(){ 
      $(this).prop('background-color','white'); 
     }); 
    }; 

但是,正如PSL建议,在“本”在checkAs(这)将不会是DOM元素。一个CSS解决方案可能会更好:

div :hover{ 
    background-color: gainsboro 
}