コードの表示
(function ($) {
$.fn.menu = function (options) {
if (typeof options != '未定義' && options.constructor === Array) options = { data: options };
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 if (opts.data[i].id == id)
return opts.data[i];
}
null を返す;
}
// 生成されたHTML
function getHtml(pid) {
var _li_data = getData(pid);
if (_li_data.length == 0) return null;
変数_ul = $('
');
$.each(_li_data, function (i, _d) {
var _children = getHtml(_d.id);
変数_li = $('
').appendTo(_ul);
if (_d.n == null || _d.n.length == 0) {
_li.addClass('spacing');
} else if (typeof _d.fn === '関数') {
$('
.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({
マウスオーバー: function () {
_children.show();
},
マウスアウト: function () {
_children.hide();
}
});
}
})
if (pid == null && opts.type == 1) {
_ul.addClass('horizontal');
} else {
var _level = getLevel(pid );
_レベル > 0 && _ul.hide();
_ul.addClass('vertical');
if (_level > opts.type)
_ul.addClass('offset');
}
return _ul;
}
// 返下级データ数组
function getData(pid) {
var _data = [];
_tempMenuData = $.grep(_tempMenuData, 関数 (_d) {
if (_d.pid == pid) {
_data.push(_d);
return true;
}
false を返す;
}, true);
return _data;
}
return this.each(function () {
var me = $(this);
me.addClass('ctcx-menu');
if ( opts.data != null && opts.data.length > 0) {
$.merge(_tempMenuData, opts.data);
me.append(getHtml(null));
}else {
。 ; } ); $.fn.menu.defaults = {
type: 1, //メニューの表示モード (主に、最初のレベルが水平か垂直かを指します。デフォルトは水平 1、垂直です) 0)
/*
data : メニューの配列データを動的に生成します。このデータを指定すると、メニューはこのデータで埋められます (メニュー内の元のデータは置き換えられます)
データ形式: [menu] ,menu,...]
メニューオブジェクトの形式: { id: 1, pid: null, n: 'メニュー名 1', url: '#', fn: コールバック関数}
*/
);
JS コードを呼び出します
コードをコピー
コードは次のとおりです:
コードの表示
$(function () {
var _menuData = [
'#' },
{ id: 4, pid: null, n: 'メニュー名4 '、url:'# '}、
{id:5、pid:null、n:'メニュー名5 ''、url: '#'}、
'メニュー名7'、url: ' #' },
3, n: 'メニュー名 9'、URL: '#' },
11、pid: 9、n: 'メニュー名 11'、url: '#' },
>}:0、データ:_menudata});
html
コードは次のとおりです:
View Code
Click here to download usage examples and all files.