1

我需要从http://www.addthis.com/help/toolbox放置一个自定义悬停菜单,但是 Rails 使用 Prototype 而给出的代码是在 JQuery 中。我对这两个 JavaScript 库都没有太多经验,如果有人可以提供帮助,将不胜感激!

$(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);
        }
    }
});
4

2 回答 2

2

因此,如果您不拘泥于使用Prototype而是想使用jQuery,那么有一个名为jRails的插件可以作为Prototype的替代品。

并不是说Prototype有什么问题,但是安装jQuery最终可能比尝试将它移植到Prototype更容易。希望对您有所帮助(对不起,如果它不是您要找的东西)。

编辑这个页面有一些关于jQueryRails的好信息。希望有帮助。

于 2009-07-06T20:55:55.837 回答
1

您可以用 jRails 插件替换 Prototype。或者您也可以根据需要扩展原型,这里是数据原型等效的简单示例:

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']);
}});

只需按照文档进行操作,我确信您可以从这里接管并修改或按照您的意愿使用此代码。

于 2010-12-06T19:08:02.787 回答