2009-07-06 5 views
1

http://www.addthis.com/help/toolboxからカスタムホバーメニューを入れる必要がありますが、RailsはPrototypeを使用していますが、与えられたコードはJQueryにあります。誰かが大いに感謝するのを助けることができるなら、私はいずれかのJavaScriptライブラリで多くの経験を持っていません!AddThisのプロトタイプへのJQuery

$(function() 
{ 
    $('.custom_button, .hover_menu').mouseenter(function() 
    { 
     $('.hover_menu').fadeIn('fast'); 
     $('.custom_button').addClass('active'); 
     $(this).data('in', true); 
     $('.hover_menu').data('hidden', false); 
    }).mouseleave(function() 
    { 
     $(this).data('in', false); 
     setTimeout(hideMenu, delay); 
    }); 

    var delay = 400; 
    function hideMenu() 
    { 
     if (!$('.custom_button').data('in') && !$('.hover_menu').data('in') && !$('.hover_menu').data('hidden')) 
     { 
      $('.hover_menu').fadeOut('fast'); 
      $('.custom_button').removeClass('active'); 
      $('.hover_menu').data('hidden', true); 
     } 
    } 
}); 
+0

まだ回答がありません。 – thebrokencube

答えて

2

あなたがPrototypeを使用して縛ら、代わりにjQueryを使用したくないしているのであれば、ドロップイン置換Prototype用として機能jRailsと呼ばれるプラグインがあります。

Prototypeに問題はありませんが、jQueryをインストールすると、Prototypeに移植しようとするよりも簡単になる場合があります。希望が助けます(あなたが探していたものとまったく同じものでなければ申し訳ありません)。

EDITThis pagejQueryRailsに関するいくつかの良い情報を持っています。希望が役立ちます。

+0

これは悪い考えではありません。問題は、開発者が必要以上にライブラリを追加したくないということです(Prototype/Scriptaculousはパッケージ化されており、YUIも使用しています) – echoblaze

+0

ああ、大丈夫です。それは意味がある、あまり役に立たなかったことをごめんね。 – thebrokencube

+0

もしあなたがすでにprotoとyuiを手に入れているのなら、jQueryとextjsを含めて完全なクォータにはいかがですか? – redsquare

1

PrototypeをjRailsプラグインに置き換えることができます。それともあなたはまた、ここでデータのプロトタイプと同等の簡単な例である、あなたのニーズにプロトタイプを拡張することができます。

Element.addMethods({ 
/** 
* Element#saveData(@element, key, value) -> @element 
* Caches given data 
* $('foo).saveData('keyName', 'Some random data'); 
* 
*/ 
saveData: function(element, key, value){ 
    if (Object.isUndefined(this['ATMCCache']) || !Object.isHash(this['ATMCCache'])){ 
     this['ATMCCache'] = $H(); 
    } 
    this['ATMCCache'].set(key,value); 
    return element; 
}, 
/** 
* Element#getData(@element, key) -> Value or Hash 
* Returns requested key or entire hash 
* $('foo).getData('keyName'); 
* 
*/ 
getData: function(element, key){ 
    return this['ATMCCache'].get(key) || this['ATMCCache']; 
}, 
/** 
* Element#hasData(@element) -> Boolean 
* Returns Boolean if element has any data stored 
* $('foo).hasData(); 
* 
*/ 
hasData: function(){ 
    return !Object.isUndefined(this['ATMCCache']); 
}}); 

ちょうどあなたがここから引き継ぐと変更またはあなたがこのコードで望むように行うことができることを確認してドキュメントイムに従ってください。

関連する問題