Javascript Drupal-Tinynav js
当我的网站通过Tinynav.js模块中规定的像素阈值时,所有菜单项都会显示,它们应该减去父菜单项。我通过特殊菜单项模块将父项定义为无链接,这意味着父div只是子菜单项的占位符,不链接到任何内容。问题是当网站进入阈值时,下拉滚动菜单取代导航菜单出现,它不显示父项,只显示链接到父项的子项 似乎是因为父项被定义为“无链接”,因此Tiny.js模块跳过它,只显示子菜单。我尝试了很多方法,但都没有成功,我上传了与Tinynav.js和html相关的js,因此可以对其进行编辑 它可能是编辑此文件或其他内容 谢谢你的帮助 htmlJavascript Drupal-Tinynav js,javascript,jquery,drupal,drupal-7,Javascript,Jquery,Drupal,Drupal 7,当我的网站通过Tinynav.js模块中规定的像素阈值时,所有菜单项都会显示,它们应该减去父菜单项。我通过特殊菜单项模块将父项定义为无链接,这意味着父div只是子菜单项的占位符,不链接到任何内容。问题是当网站进入阈值时,下拉滚动菜单取代导航菜单出现,它不显示父项,只显示链接到父项的子项 似乎是因为父项被定义为“无链接”,因此Tiny.js模块跳过它,只显示子菜单。我尝试了很多方法,但都没有成功,我上传了与Tinynav.js和html相关的js,因此可以对其进行编辑 它可能是编辑此文件或其他内容
tinynav-fork.js
/*! Originally based on the tinynav.js library found at http://tinynav.viljamis.com by @viljamis */
(function ($, window, i) {
$.fn.tinyNav = function (options) {
// Default settings
var settings = $.extend({
'active' : 'selected', // String: Set the "active" class
'header' : false, // Boolean: Show header instead of the active item
'indent' : '--', // String: Set this to empty to disable identing
'depth_count' : 2 // Integer: depth to stop counting
}, options);
return this.each(function () {
// Used for namespacing
i++;
var $nav = $(this),
// Namespacing
namespace = 'tinynav',
namespace_i = namespace + i,
l_namespace_i = '.l_' + namespace_i,
$select = $('<select/>').addClass(namespace + ' ' + namespace_i);
if ($nav.is('ul,ol')) {
if (settings.header) {
$select.append(
$('<option value="-null-"/>').text(Drupal.t('Navigation'))
);
}
// Build options
var options = '';
$nav
.addClass('l_' + namespace_i)
.find('a')
.each(function () {
var indent = '';
// indent once for each parent this has
var parent_count = $(this).parents("ul,ol").length;
// apply indenting if found
for (var i=1; i<parent_count; i++) {
indent += settings.indent;
}
// add spacing to end if we indent at all
if (indent != '') {
indent += ' ';
}
if (parent_count < settings.depth_count) {
options +=
'<option value="' + $(this).attr('href') + '">' +
indent + $(this).text() +
'</option>';
}
});
// Append options into a select
$select.append(options);
// Select the active item
$select
.find(':eq(' + (settings.header + $(l_namespace_i + ' li')
.index($(l_namespace_i + ' .' + settings.active)) + ')'))
.attr('selected', true);
// Change window location
$select.change(function () {
if ($(this).val() != '-null-') {
window.location.href = $(this).val();
}
});
// Inject select
$(l_namespace_i).after($select);
}
});
};
})(jQuery, this, 0);
/*!最初基于在上找到的tinynav.js库http://tinynav.viljamis.com 作者@viljamis*/
(函数($,窗口,i){
$.fn.tinyNav=函数(选项){
//默认设置
变量设置=$.extend({
'active':'selected',//字符串:设置“active”类
“头”:false,//布尔值:显示头而不是活动项
'缩进':'-',//字符串:将此设置为空以禁用标识
“depth\u count”:2//整数:停止计数的深度
},选项);
返回此。每个(函数(){
//用于名称空间
i++;
var$nav=$(此),
//名称空间
命名空间='tinynav',
名称空间_i=名称空间+i,
l_namespace_i='.l_'+namespace_i,
$select=$('').addClass(命名空间+''+命名空间i);
如果($nav.is('ul,ol')){
if(settings.header){
$select.append(
$('').text(Drupal.t('Navigation'))
);
}
//构建选项
var选项=“”;
$nav
.addClass('l_u'+名称空间_i)
.find('a'))
.每个(功能){
var缩进=“”;
//为每个父级缩进一次
var parent_count=$(this).parents(“ul,ol”).length;
//如果发现缩进,则应用缩进
对于(var i=1;i来说,问题出在Tinynav.js模块中,因为它正在寻找
<a>
但特殊菜单项模块会创建一个
<span>
这是一个工作代码:
/*! http://tinynav.viljamis.com v1.03 by @viljamis
modified by l.tagliamonte to fix Special Menu Items module menu links*/
(function ($, window, i) {
$.fn.tinyNav = function (options) {
// Default settings
var settings = $.extend({
'active' : 'selected', // String: Set the "active" class
'header' : false // Boolean: Show header instead of the active item
}, options);
return this.each(function () {
// Used for namespacing
i++;
var $nav = $(this),
// Namespacing
namespace = 'tinynav',
namespace_i = namespace + i,
l_namespace_i = '.l_' + namespace_i,
$select = $('<select/>').addClass(namespace + ' ' + namespace_i);
if ($nav.is('ul,ol')) {
if (settings.header) {
$select.append(
$('<option/>').text('Navigation')
);
}
// Build options
var options = '';
var indent = 0;
var indented = [" "];
for ( var i = 0; i < 10; i++) {
indented.push(indented[indented.length-1]+indented[indented.length-1]);
}
indented[0] = "";
$nav
.addClass('l_' + namespace_i)
.children('li')
.each(buildNavTree=function () {
var a = $(this).children('a').first();
var nolink = $(this).children('span.nolink').first();
if (nolink.html() != null){
options +=
'<option value="' + nolink.html() + '" disabled>' +
indented[indent] + nolink.html() +
'</option>';
}else{
options +=
'<option value="' + a.attr('href') + '">' +
indented[indent] + a.text() +
'</option>';
}
indent++;
$(this).children('ul,ol').children('li').each(buildNavTree);
indent--;
});
// Append options into a select
$select.append(options);
// Select the active item
if (!settings.header) {
$select
.find(':eq(' + $(l_namespace_i + ' li')
.index($(l_namespace_i + ' li.' + settings.active)) + ')')
.attr('selected', true);
}
// Change window location
$select.change(function () {
window.location.href = $(this).val();
});
// Inject select
$(l_namespace_i).after($select);
}
$('option[value="'+document.location+'"]').attr("selected","selected");
});
};
})(jQuery, this, 0);
// Tinynav
jQuery(function(){
// Main Menu
jQuery('#main-menu > ul.menu').tinyNav({
active: 'selected', // Set the "active" class
});
});
/*!http://tinynav.viljamis.com v1.03作者@viljamis
由l.tagliamonte修改以修复特殊菜单项模块菜单链接*/
(函数($,窗口,i){
$.fn.tinyNav=函数(选项){
//默认设置
变量设置=$.extend({
'active':'selected',//字符串:设置“active”类
“标题”:false//Boolean:显示标题而不是活动项
},选项);
返回此。每个(函数(){
//用于名称空间
i++;
var$nav=$(此),
//名称空间
命名空间='tinynav',
名称空间_i=名称空间+i,
l_namespace_i='.l_'+namespace_i,
$select=$('').addClass(命名空间+''+命名空间i);
如果($nav.is('ul,ol')){
if(settings.header){
$select.append(
$('').text('导航')
);
}
//构建选项
var选项=“”;
var缩进=0;
变量缩进=[“”];
对于(变量i=0;i<10;i++){
缩进推压(缩进[缩进长度-1]+缩进[缩进长度-1]);
}
缩进[0]=“”;
$nav
.addClass('l_u'+名称空间_i)
.儿童(‘李’)
.each(buildNavTree=函数(){
var a=$(this.children('a').first();
var nolink=$(this.children('span.nolink').first();
如果(nolink.html()!=null){
选择权+=
'' +
缩进的[indent]+nolink.html()+
'';
}否则{
选择权+=
'' +
缩进的[缩进]+a.文本()+
'';
}
缩进++;
$(this.children('ul,ol')。children('li')。每个(buildNavTree);
缩进--;
});
//将选项附加到选择列表中
$select.append(选项);
//选择活动项
如果(!settings.header){
$select
.find(':eq('+$(l_名称空间_i+'li'))
.index($(l_名称空间_i+'li.+settings.active))+'))
.attr('selected',true);
}
//更改窗口位置
$select.change(函数(){
window.location.href=$(this.val();
});
//注入选择
$(l_namespace_i).after($select);
}
$('option[value=“”+document.location+''“]').attr(“选定的”、“选定的”);
});
};
})(jQuery,this,0);
//蒂尼纳夫
jQuery(函数(){
//主菜单
jQuery(“#主菜单>ul.menu”).tinyNav({
active:'选定',//设置“active”类
});
});
<span>
/*! http://tinynav.viljamis.com v1.03 by @viljamis
modified by l.tagliamonte to fix Special Menu Items module menu links*/
(function ($, window, i) {
$.fn.tinyNav = function (options) {
// Default settings
var settings = $.extend({
'active' : 'selected', // String: Set the "active" class
'header' : false // Boolean: Show header instead of the active item
}, options);
return this.each(function () {
// Used for namespacing
i++;
var $nav = $(this),
// Namespacing
namespace = 'tinynav',
namespace_i = namespace + i,
l_namespace_i = '.l_' + namespace_i,
$select = $('<select/>').addClass(namespace + ' ' + namespace_i);
if ($nav.is('ul,ol')) {
if (settings.header) {
$select.append(
$('<option/>').text('Navigation')
);
}
// Build options
var options = '';
var indent = 0;
var indented = [" "];
for ( var i = 0; i < 10; i++) {
indented.push(indented[indented.length-1]+indented[indented.length-1]);
}
indented[0] = "";
$nav
.addClass('l_' + namespace_i)
.children('li')
.each(buildNavTree=function () {
var a = $(this).children('a').first();
var nolink = $(this).children('span.nolink').first();
if (nolink.html() != null){
options +=
'<option value="' + nolink.html() + '" disabled>' +
indented[indent] + nolink.html() +
'</option>';
}else{
options +=
'<option value="' + a.attr('href') + '">' +
indented[indent] + a.text() +
'</option>';
}
indent++;
$(this).children('ul,ol').children('li').each(buildNavTree);
indent--;
});
// Append options into a select
$select.append(options);
// Select the active item
if (!settings.header) {
$select
.find(':eq(' + $(l_namespace_i + ' li')
.index($(l_namespace_i + ' li.' + settings.active)) + ')')
.attr('selected', true);
}
// Change window location
$select.change(function () {
window.location.href = $(this).val();
});
// Inject select
$(l_namespace_i).after($select);
}
$('option[value="'+document.location+'"]').attr("selected","selected");
});
};
})(jQuery, this, 0);
// Tinynav
jQuery(function(){
// Main Menu
jQuery('#main-menu > ul.menu').tinyNav({
active: 'selected', // Set the "active" class
});
});