Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.03.2011, 18:30
Новичок на форуме
Отправить личное сообщение для Bangoo Посмотреть профиль Найти все сообщения от Bangoo
 
Регистрация: 07.01.2011
Сообщений: 5

Выпадающее меню не работает в Chrome
Интегрировал выпадающее меню на JQuerry в шаблон joomla. В ForeFox работает нормально, но в Chrome и Opera меню выпадать отказывается. Демо меню здесь:

Chrome выдает следующую ошибку:
Uncaught TypeError: Cannot set property 'display' of undefined
o.fn.extend.showjquery.min.js:19
megaHoverOvermunu.js:5
$.fn.hoverIntent.comparejquery.hoverIntent.minified.js:9
$.fn.hoverIntent.handleHoverjquery.hoverIntent.minified.js:9


minified.js code:
**
* hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
*
* @param  f  onMouseOver function || An object with configuration options
* @param  g  onMouseOut function  || Nothing (use configuration options object)
* @author    Brian Cherne <brian@cherne.net>
*/
(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:0};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY;};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev]);}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev]);};var handleHover=function(e){var p=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(p&&p!=this){try{p=p.parentNode;}catch(e){p=this;}}if(p==this){return false;}var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);}if(e.type=="mouseover"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob);},cfg.timeout);}}};return this.mouseover(handleHover).mouseout(handleHover);};})(jQuery);


munu.js
$(document).ready(function() {


    function megaHoverOver(){
    $(this).find(".sub").stop().fadeTo('fast', 1).show();

    //Calculate width of all ul's
    (function($) {
    jQuery.fn.calcSubWidth = function() {
    rowWidth = 0;
    //Calculate row
    $(this).find("ul").each(function() {
    rowWidth += $(this).width();
    });
    };
    })(jQuery);

    if ( $(this).find(".row").length > 0 ) { //If row exists...
    var biggestRow = 0;
    //Calculate each row
    $(this).find(".row").each(function() {
    $(this).calcSubWidth();
    //Find biggest row
    if(rowWidth > biggestRow) {
    biggestRow = rowWidth;
    }
    });
    //Set width
    $(this).find(".sub").css({'width' :biggestRow});
    $(this).find(".row:last").css({'margin':'0'});

    } else { //If row does not exist...

    $(this).calcSubWidth();
    //Set Width
    $(this).find(".sub").css({'width' : rowWidth});

    }
    }

    function megaHoverOut(){
    $(this).find(".sub").stop().fadeTo('fast', 0, function() {
    $(this).hide();
    });
    }


    var config = {
    sensitivity: 1, // number = sensitivity threshold (must be 1 or higher)
    interval: 1, // number = milliseconds for onMouseOver polling interval
    over: megaHoverOver, // function = onMouseOver callback (REQUIRED)
    timeout: 1, // number = milliseconds delay before onMouseOut
    out: megaHoverOut // function = onMouseOut callback (REQUIRED)
    };

    $("ul#topnav li .sub").css({'opacity':'0'});
    $("ul#topnav li").hoverIntent(config);



    });


CSS
.container {
    width: 960px;
    padding: 0;
    margin: 0 auto;
}

ul#topnav {
    margin: 0; padding: 0;
    float:left;
    width: 100%;
    list-style: none;
    font-size: 1.1em;
}
ul#topnav li {
    float: left;
    margin: 0; padding: 0;
    position: relative;
}
ul#topnav li a {
    float: left;
    text-indent: -9999px;
    height: 44px;
}
ul#topnav li:hover a, ul#topnav li a:hover { background-position: left bottom; }
ul#topnav a.home {
    background: url(../images/blue/nav_home.png) no-repeat;
    width: 78px;
}
ul#topnav a.products {
    background: url(../images/blue/nav_products.png) no-repeat;
    width: 117px;
}
ul#topnav a.sale {
    background: url(../images/blue/nav_sale.png) no-repeat;
    width: 124px;
}
ul#topnav a.community {
    background: url(../images/blue/nav_community.png) no-repeat;
    width: 124px;
}
ul#topnav a.store {
    background: url(../images/blue/nav_store.png) no-repeat;
    width: 141px;
}

.sub {
    position: absolute;
    top: 44px; left: 0;
    background: #344c00 url(../images/blue/sub_bg.png) repeat-x;
    padding: 20px 20px 20px;
    float: left;
    /*--Bottom right rounded corner--*/
    -moz-border-radius-bottomright: 5px;
    -khtml-border-radius-bottomright: 5px;
    -webkit-border-bottom-right-radius: 5px;
    /*--Bottom left rounded corner--*/
    -moz-border-radius-bottomleft: 5px;
    -khtml-border-radius-bottomleft: 5px;
    -webkit-border-bottom-left-radius: 5px;
    display: none;
}

ul#topnav li .sub {
    position: absolute;
    top: 44px; left: 0;
    background: #344c00 url(../images/blue/sub_bg.png) repeat-x;
    padding: 20px 20px 20px;
    float: left;
     border-radius: 5px;
    /*--Bottom right rounded corner--*/
    -moz-border-radius-bottomright: 5px;
    -khtml-border-radius-bottomright: 5px;
    -webkit-border-bottom-right-radius: 5px;
    /*--Bottom left rounded corner--*/
    -moz-border-radius-bottomleft: 5px;
    -khtml-border-radius-bottomleft: 5px;
    -webkit-border-bottom-left-radius: 5px;
    display: none;
}
ul#topnav li .row {
    clear: both;
    float: left;
    width: 100%;
    margin-bottom: 10px;}

ul#topnav li .sub ul{
    list-style: none;
    margin: 0; padding: 0;
    width: 150px;
    float: left;
}
ul#topnav .sub ul li {
    width: 100%;
    color: #fff;
}
ul#topnav .sub ul li h2 {
    padding: 0;  margin: 0;
    font-size: 1.3em;
    font-weight: normal;
}
ul#topnav .sub ul li h2 a {
    padding: 5px 0;
    background-image: none;
    color: #e8e000;
}
ul#topnav .sub ul li a {
    float: none;
    text-indent: 0; /*--Reset text indent--*/
    height: auto;
    background: url(../images/blue/navlist_arrow.png) no-repeat 5px 12px;
    padding: 7px 5px 7px 15px;
    display: block;
    text-decoration: none;
    color: #fff;
}
ul#topnav .sub ul li a:hover {color: #ddd; background-position: 5px 12px ;}`


Демо Chrome воспроизводит нормально, но после интеграции меню в шаблон Joomla Chrome не видит элемент <.sub>
Помогите, если есть такая возможность.
Ответить с цитированием
  #2 (permalink)  
Старый 21.03.2011, 20:33
Аватар для phgrey
Интересующийся
Отправить личное сообщение для phgrey Посмотреть профиль Найти все сообщения от phgrey
 
Регистрация: 21.03.2011
Сообщений: 14

дайте лучше ссылку на неработающий сайт.
и minified.js code: можно не вставлять - все равно в нем кроме брауузера хрен кто разберется )
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Находится ли мышка над дивом ? (выпадающее меню) advsm jQuery 31 24.09.2014 17:50
Выпадающее меню на JS (подкатегории) Trueplayer Events/DOM/Window 5 18.09.2014 22:29
Не работает jQuery меню с AJAX eugene1986 jQuery 0 08.07.2010 18:49
Скрипт меню не работает только в Firefox somatic Firefox/Mozilla 2 28.07.2009 03:23
JS меню работает на обычной html странице, а на юкозовском движке нет. adware Я не знаю javascript 10 16.05.2009 16:48