Jquery没有绑定事件onload

时间:2015-12-21 18:06:30

标签: javascript jquery global-variables

(function() {
var bgOn;
$(".ContainingBox").on('hover', function() {
    function() { 
    bgOn = $(this).css("background-color");
            $(this).css("background-color", "#e5fff8");
      }, function() {
      $(this).css("background-color", bgOn);
      }
 });
})();

我想将事件绑定悬停。当我没有将它包装在匿名函数中并使用.hover()时,此代码工作正常。但是,我们要求不使用全局变量。所以我需要绑定事件!

这不可能吗?

2 个答案:

答案 0 :(得分:3)

您的代码有语法错误,特别是on()不接受多个回调等。
此外,没有原生hover事件,您应该使用mouseentermouseleave代替

$(".ContainingBox").on({
    mouseenter: function() {
        $(this).data('bg', $(this).css("background-color"));
        $(this).css("background-color", "#e5fff8");
    },
    mouseleave: function() {
        $(this).css("background-color", $(this).data('bg'));
    }
});

使用jQuery' data()而不是单个变量,会记住每个元素的背景颜色

FIDDLE

答案 1 :(得分:0)

试试这个......

(function() {
       var bgOn;
       $(".ContainingBox").on('mouseover', function() {
          function() { 
             bgOn = $(this).css("background-color");
             $(this).css("background-color", "#e5fff8");
          }, function() {
               $(this).css("background-color", bgOn);
             }
       });
 })();