-3

要素に hover 属性を設定する jQuery のばかげた方法に驚いたことさえあります。このサンプル CSS を見てください。

div.test
{
   width: 20px;
   height: 20px;
   color: #000000;
   background: #FFFFFF;
}
div.test:hover
{
   color: #FFFFFF;
   background: #CC0000;
}

これを jQuery に変換する場合は、次のように入力する必要があります。

$('div.test').css({
   'width' : '20px',
   'height' : '20px',
   'color' : '#000000',
   'background' : '#FFFFFF'
});
$('div.test').hover(function() {
   $(this).css({
      'color' : '#FFFFFF',
      'background' : '#CC0000'
   });
}, function() {
   $(this).css({
      'color' : '#000000',
      'background' : '#FFFFFF'
   });
});

これを行うより良い方法はありませんか?当たり前のことを書くのはばかげているように感じます。

前もって感謝します。

4

4 に答える 4

15

あなたはこれに間違った方法で近づいています。次のように CSS クラスを定義します。

.highlighted
{
   color: #FFFFFF;
   background: #CC0000;
}

$('div.test').hover(function() {
    $(this).addClass('highlighted');
}, function() {
    $(this).removeClass('highlighted');
});
于 2009-06-14T20:00:38.973 に答える
3

また、次の簡単なプラグインを記述して、必要なことを行うこともできます (自動アンホバリング):

$.fn.easyHover = function(cssProps){
   return this.each(function(){
       var $t = $(this);
       var oldProps = {};
       for(x in cssProps)
          oldProps[x] = $t.css(x);
       $t.hover(function(){
          $(this).css(cssProps);
       }, function(){
          $(this).css(oldProps);
       });
   }
}

次に、次のように使用できます。

$('#elem').easyHover({color:'#000', background:'#ccc'});

しかし、Praveen の答えは間違いなく進むべき道です。

于 2009-06-14T20:05:29.273 に答える
2

別の方法は次のようになると思います。

// In you stylesheet, just define the default properties
div.test
{
   width: 20px;
   height: 20px;
}

次に、使用するプロパティを保持するための単純なオブジェクトラッパーを作成します

var hoverHelper = (function () {
   var styles = {
      hoverStyle: {
         'color' : '#FFFFFF',
         'background' : '#CC0000'
      },
      defaultStyle: {
         'color' : '#000000',
         'background' : '#FFFFFF'
      }
   };

   return {
      init: function (selector) {
         $(selector).hover(
            function () {
               $(this).css(styles.hoverStyle);
            },
            function () {
               $(this).css(styles.defaultStyle);
            }
         );
      }
   };
}());

hoverHelper.init('.hoverElementClass'); // Apply the hover functions
                                        // to all matching elements

このようにして、少なくともスタイル定義を1か所に保持します。

于 2009-06-15T09:21:50.743 に答える