코드 보기
(함수($) {
$.fn.menu = 함수(옵션) {
if (옵션 유형 != '정의되지 않음' && options.constructor === 배열) 옵션 = { 데이터: 옵션 };
var opts = $.extend({}, $.fn.menu.defaults, options);
var _tempMenuData = [];
//返回数据级别
function getLevel(id) {
var _level = 0;
var _o = getMenuData(id);
while (_o != null) {
_level ;
_o = getMenuData(_o.pid);
}
return _level;
}
//返回数据对象
function getMenuData(id) {
for (var i = 0; i < ; opts.data.length; i ) {
if (opts.data[i].id == id)
return opts.data[i];
}
null;
> 🎜> var _ul = $('
');
$.each(_li_data, function (i, _d) {
var _children = getHtml(_d.id);
var _li = $('
').appendTo(_ul);
if (_d.n == null || _d.n.length == 0) {
_li.addClass('spacing');
} else if (typeof _d.fn === 'function') {
$('& ㅋ href="javascript:;">').html(_d.n)
.click(function () {
_d.fn(_d.url);
}) .appendTo(_li);
} else if (_d.url.length > 0) {
$('
') .html(_d.n).appendTo(_li);
}
if (_children != null) {
_li.addClass('item-has-children');
_children.appendTo(_li);
_li.bind({
마우스오버: 기능() {
_children.show();
},
mouseout: 기능() {
>
})
if (pid == null && opts.type == 1) {
_ul.addClass('horizontal');
} else {
var _level = getLevel(pid );
_level > 0 && _ul.hide();
_ul.addClass('vertical');
if (_level > opts.type)
_ul.addClass('offset');
}
> _tempMenuData = $.grep(_tempMenuData, 함수 (_d) {
if (_d.pid == pid) {
_data.push(_d);
return true;
}
false 반환;
}, true);
return _data;
}
return this.each(function () {
var me = $(this);
만약 ( opts.data != null && opts.data.length > 0) {
$.merge(_tempMenuData, opts.data);
me.append(getHtml(null));
}else {
~ > _ul.hide() ; } ); $.fn.menu.defaults = {
type: 1, //메뉴의 표시 모드(주로 첫 번째 레벨이 수평인지 수직인지를 나타냄, 기본값은 수평 1, 수직 0) )
/*
data : 메뉴에 대한 배열 데이터를 동적으로 생성합니다. 이 데이터를 지정하면 메뉴가 이 데이터로 채워집니다. (메뉴의 원래 데이터가 대체됩니다.)
데이터 형식: [menu ,menu,...]
메뉴 개체 형식: { id: 1, pid: null, n: '메뉴 이름 1', url: '#', fn: 콜백 함수}
*/
);
JS 코드 호출
코드 복사
코드는 다음과 같습니다
코드 보기
$(function () {
var _menuData = [
> 4', url: '#' },
{ id: 5, pid: null, n: '메뉴 이름 5' ', url: '#' },
~ '메뉴 이름 7', URL: ' #' },
> 11, pid: 9, n: '메뉴 이름 11', url: '#' },
> ~ > ~ 🎜>
코드 복사
코드는 다음과 같습니다.
View Code
여기를 클릭
하여 사용 예시와 모든 파일을 다운로드하세요.