我需要从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);
}
}
});
答案 0 :(得分:2)
因此,如果您没有使用Prototype并且想要使用jQuery,那么就会有一个名为jRails的插件,它可以作为{{3}的替代品。 }}
并非Prototype出现任何问题,但安装Prototype可能比尝试将其移至jQuery更容易。希望有所帮助(对不起,如果它不是你想要的那样)。
答案 1 :(得分: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']);
}});
只需按照文档确定您可以从此处接管并使用此代码修改或执行操作。