LINUX.ORG.RU

ui.jquery не хватает фунционала


0

1

В ui.jquery нет многоуровневых меню и многоуровневых списков.
Использовал плагин, но после обновления версии jquery, он перестал работать.
Сейчас использую меню из css и один уровень.

Кто чем пользуется для меню и списков?
Два года делали ui.jquery 1.8, терпения уже нет ждать :)

★★

Последнее исправление: WinLin2 (всего исправлений: 1)

jquery.ui и ExtJS - вот две основные проблемы яваскрипта в России. Если бы сквозь технологов пропускали ток каждый раз, как только они задумываются об использовании этих фрэймворков, жить было бы проще, жить было бы веселее.

Yasenfire
()
Ответ на: комментарий от WinLin2

По городу на зерноуборочном комбайне ездить не надо.

Yasenfire
()
Ответ на: комментарий от anonymous

В ui.jquery можно выбрать только нужные элементы
и сократить объем библиотеки.

WinLin2 ★★
() автор топика

держи, дружище, многоуровневое меню

jmenu.js

/*
Copyright 2011
ff.kirill@gmail.com
*/
var jmenu = {
    //first level hover
    hover:function(elem, e) {
        
        //first, hide all popups
        $("div.popup_menu").hide()
        
        //move first-level ul's to div
        if  ($(elem).children('ul').eq(0).length > 0 || elem.$div != undefined){

			if (elem.$div == undefined) {
                elem.$div = $('<div class="popup_menu"></div>')
                $("body").append(elem.$div)
                				
                $ul = $(elem).children('ul').eq(0)
                $ul.appendTo(elem.$div)
                if ($(elem).width() > elem.$div.width()) {
                    elem.$div.width($(elem).width())
                }
                
                //nested ul unhover
                $ul.hover(
                    function(e) {
                    },
                    function(e) {
                        $(this).hide()
                    }
                )
                
                //nested ul li's hover
                $ul.find('li').each(function() {
                    if ($(this).children('ul').eq(0).length) {
                        $(this).children('a').append("  →")
                    }
                    $(this).hover(
                        function(e) {
                            //nested ul li ul show
                            $(this).children('ul').eq(0).show()
                            $(this).children('ul').eq(0).position({
                                my:        "left top",
                                at:        "right top",
                                offset:    "-10 1",
                                of:        this, // or $("#otherdiv)
                                collision: "fit"
                            })
                        },

                        function(e) {
                            $(this).children('ul').eq(0).hide()
                        }
                    )
                })
            }
            //show div
            elem.$div.children('ul').eq(0).show()
			elem.$div.show()
			if (e.toElement != elem.$div[0]) {
			elem.$div.position({
                    my:        "left top",
                    at:        "left bottom",
                    offset:    "0, 2",
                    of:        elem,
                    collision: "fit"
                })
			}
        }
    },
    //first level unhover
    unhover:function(elem, e) {

        if (elem.$div != undefined) {
            if (e.toElement != elem.$div[0] &&
                elem.$div.find(e.toElement).length == 0 &&
                e.relatedTarget != elem.$div[0] &&
                elem.$div.find(e.relatedTarget).length == 0) {
                elem.$div.hide()
            }
        }
    }
}

jQuery.fn.jmenu = function() {
    $(this).children('ul').find('ul').hide()
    $(this).children('ul').children('li').each(function() {
        if ($(this).children('ul').eq(0).length) {
                $(this).children('a').append("  ↓")
        }
        $(this).hover(
            function(e) {
                jmenu.hover(this, e);
            }/*,
            function(e) {
                jmenu.unhover(this, e);
            }*/

        );
    });
}

$(document).ready(function() {
    $('#main-menu').jmenu();
});

css'ку, думаю сам нарисуешь. ссори за говнокод =)

anon1984
()

Жди еще и не верстай пока.
jQUI дарит людям счастье отдыха от страницы, а девелоперам - выход адреналина и радость мата на собрата. Руками можно и десять уровней написать на css

minakov ★★★★★
()

> Использовал плагин, но после обновления версии jquery, он перестал работать.

Отдебажь и пофикси, в чём проблема?

karbofos
()

многоуровневые списки есть в dynatree, но это не UI-плагин, это jQuery-core плагин.

GateKeeper ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.