Javascript 折叠定位链接上的Wordpress移动菜单单击
在我的一页网站上点击导航链接后,我试图关闭我的汉堡包菜单。该网站使用的是Infinity Pro Genesis主题。以下是响应菜单的JavaScript文件:Javascript 折叠定位链接上的Wordpress移动菜单单击,javascript,jquery,wordpress,mobile,Javascript,Jquery,Wordpress,Mobile,在我的一页网站上点击导航链接后,我试图关闭我的汉堡包菜单。该网站使用的是Infinity Pro Genesis主题。以下是响应菜单的JavaScript文件: (function(document, $, undefined) { // Add js body class when javascript is enabled $('body').addClass('js'); // Add accessibility menu 'use strict'; var infinity = {
(function(document, $, undefined) {
// Add js body class when javascript is enabled
$('body').addClass('js');
// Add accessibility menu
'use strict';
var infinity = {},
mainMenuButtonClass = 'menu-toggle',
subMenuButtonClass = 'sub-menu-toggle';
infinity.init = function() {
var toggleButtons = {
menu: $('<button />', {
'class': mainMenuButtonClass,
'aria-expanded': false,
'aria-pressed': false,
'role': 'button'
})
.append(infinity.params.mainMenu),
submenu: $('<button />', {
'class': subMenuButtonClass,
'aria-expanded': false,
'aria-pressed': false,
'role': 'button'
})
.append($('<span />', {
'class': 'screen-reader-text',
text: infinity.params.subMenu
}))
};
$('.nav-primary').before(toggleButtons.menu); // add the main nav buttons
$('nav .sub-menu').before(toggleButtons.submenu); // add the submenu nav buttons
$('.' + mainMenuButtonClass).each(_addClassID);
$('.' + mainMenuButtonClass).addClass('ionicons-before ion-drag');
$('.' + subMenuButtonClass).addClass('ionicons-before ion-chevron-down');
$(window).on('resize.infinity', _doResize).triggerHandler('resize.infinity');
$('.' + mainMenuButtonClass).on('click.infinity-mainbutton', _mainmenuToggle);
$('.' + subMenuButtonClass).on('click.infinity-subbutton', _submenuToggle);
};
// add nav class and ID to related button
function _addClassID() {
var $this = $(this),
nav = $this.next('nav'),
id = 'class';
$this.addClass($(nav).attr('class'));
if ($(nav).attr('id')) {
id = 'id';
}
$this.attr('id', 'mobile-' + $(nav).attr(id));
}
// Change Skiplinks and Superfish
function _doResize() {
var buttons = $('button[id^=mobile-]').attr('id');
if (typeof buttons === 'undefined') {
return;
}
_superfishToggle(buttons);
_changeSkipLink(buttons);
_maybeClose(buttons);
}
/**
* action to happen when the main menu button is clicked
*/
function _mainmenuToggle() {
var $this = $(this);
_toggleAria($this, 'aria-pressed');
_toggleAria($this, 'aria-expanded');
$this.toggleClass('activated');
$('nav.nav-primary').slideToggle('fast'); //changed to .nav-primary since we're not toggling .nav-secondary
}
/**
* action for submenu toggles
*/
function _submenuToggle() {
var $this = $(this),
others = $this.closest('.menu-item').siblings();
_toggleAria($this, 'aria-pressed');
_toggleAria($this, 'aria-expanded');
$this.toggleClass('activated');
$this.next('.sub-menu').slideToggle('fast');
others.find('.' + subMenuButtonClass).removeClass('activated').attr('aria-pressed', 'false');
others.find('.sub-menu').slideUp('fast');
}
/**
* activate/deactivate superfish
*/
function _superfishToggle(buttons) {
if (typeof $('.js-superfish').superfish !== 'function') {
return;
}
if ('none' === _getDisplayValue(buttons)) {
$('.js-superfish').superfish({
'delay': 100,
'animation': {
'opacity': 'show',
'height': 'show'
},
'dropShadows': false
});
} else {
$('.js-superfish').superfish('destroy');
}
}
/**
* modify skip links to match mobile buttons
*/
function _changeSkipLink(buttons) {
var startLink = 'genesis-nav',
endLink = 'mobile-genesis-nav';
if ('none' === _getDisplayValue(buttons)) {
startLink = 'mobile-genesis-nav';
endLink = 'genesis-nav';
}
$('.genesis-skip-link a[href^="#' + startLink + '"]').each(function() {
var link = $(this).attr('href');
link = link.replace(startLink, endLink);
$(this).attr('href', link);
});
}
function _maybeClose(buttons) {
if ('none' !== _getDisplayValue(buttons)) {
return;
}
$('.menu-toggle, .sub-menu-toggle')
.removeClass('activated')
.attr('aria-expanded', false)
.attr('aria-pressed', false);
$('nav, .sub-menu')
.attr('style', '');
}
/**
* generic function to get the display value of an element
* @param {id} $id ID to check
* @return {string} CSS value of display property
*/
function _getDisplayValue($id) {
var element = document.getElementById($id),
style = window.getComputedStyle(element);
return style.getPropertyValue('display');
}
/**
* Toggle aria attributes
* @param {button} $this passed through
* @param {aria-xx} attribute aria attribute to toggle
* @return {bool} from _ariaReturn
*/
function _toggleAria($this, attribute) {
$this.attr(attribute, function(index, value) {
return 'false' === value;
});
}
$(document).ready(function() {
infinity.params = typeof InfinityL10n === 'undefined' ? '' : InfinityL10n;
if (typeof infinity.params !== 'undefined') {
infinity.init();
}
});
(函数(文档,$,未定义){
//启用javascript时添加js主体类
$('body').addClass('js');
//添加辅助功能菜单
"严格使用",;
变量无穷={},
mainMenuButtonClass='菜单切换',
子菜单按钮类='子菜单切换';
infinity.init=函数(){
变量切换按钮={
菜单:$(''{
“类”:mainMenuButtonClass,
"咏叹调":错,,
"aria pressed":错,,
“角色”:“按钮”
})
.append(无穷大参数主菜单),
子菜单:$(''{
“类”:子菜单按钮类,
"咏叹调":错,,
"aria pressed":错,,
“角色”:“按钮”
})
.附加($(''){
“类”:“屏幕阅读器文本”,
文本:infinity.params.子菜单
}))
};
$('.nav primary')。在(toggleButtons.menu)之前;//添加主导航按钮
$('nav.sub menu')。在(toggleButtons.submenu)之前;//添加子菜单导航按钮
$('..+mainMenuButtonClass).each(_addClassID);
$('..+mainMenuButtonClass).addClass('ionicons-before-ion drag');
$('..+子菜单按钮类).addClass('ionicons-before ion CHEVERON down');
$(window).on('resize.infinity',u doResize).triggerHandler('resize.infinity');
$('..+mainMenuButtonClass).on('click.infinity mainbutton',u MainMenuTuggle);
$('.+子菜单按钮类).on('click.infinity子按钮',_子菜单);
};
//将导航类别和ID添加到相关按钮
函数_addClassID(){
变量$this=$(this),
nav=$this.next('nav'),
id='类';
$this.addClass($(nav.attr('class'));
如果($(导航).attr('id')){
id='id';
}
$this.attr('id','mobile-'+$(nav.attr(id));
}
//更换Skiplings和Superfish
函数_doResize(){
var buttons=$('button[id^=mobile-]')。attr('id');
如果(按钮类型===“未定义”){
返回;
}
_开关(按钮);
_changeSkipLink(按钮);
_maybeClose(按钮);
}
/**
*单击主菜单按钮时发生的操作
*/
函数_mainmenuutoggle(){
var$this=$(this);
_托格里亚(这是“阿里亚出版社”);
_托格里亚(‘咏叹调扩展’);
$this.toggleClass('activated');
$('nav.nav primary').slideToggle('fast');//更改为.nav primary,因为我们没有切换.nav secondary
}
/**
*子菜单切换的操作
*/
函数_subminotogle(){
变量$this=$(this),
others=$this.closest('.menu item').sides();
_托格里亚(这是“阿里亚出版社”);
_托格里亚(‘咏叹调扩展’);
$this.toggleClass('activated');
$this.next(“.sub-menu”).slideToggle('fast');
其他.find('.'+子菜单按钮类).removeClass('activated').attr('aria-pressed','false');
其他.find('.sub-menu').slideUp('fast');
}
/**
*激活/停用superfish
*/
功能切换(按钮){
if(typeof$('.js superfish').superfish!=='function'){
返回;
}
如果('none'===\u getDisplayValue(按钮)){
$('.js superfish').superfish({
“延迟”:100,
“动画”:{
“不透明度”:“显示”,
“高度”:“显示”
},
“dropShadows”:false
});
}否则{
$('.js superfish').superfish('destroy');
}
}
/**
*修改跳过链接以匹配移动按钮
*/
功能_changeSkipLink(按钮){
var STARTINK=‘genesis nav’,
endLink=‘移动创世导航’;
如果('none'===\u getDisplayValue(按钮)){
STARTINK=‘移动创世导航’;
endLink=‘genesis导航’;
}
$('.genesis跳过链接a[href^=“#”+startLink+'']”)。每个(函数(){
var link=$(this.attr('href');
链接=链接.替换(链接,结束链接);
$(this.attr('href',link);
});
}
功能_可关闭(按钮){
如果('none'!=\u getDisplayValue(按钮)){
返回;
}
$(“.菜单切换,.子菜单切换”)
.removeClass('已激活')
.attr('aria-expanded',false)
.attr('aria-pressed',false);
$(“导航,.子菜单”)
.attr('风格','');
}
/**
*获取元素显示值的通用函数
*@param{id}$id要检查
*@return{string}display属性的CSS值
*/
函数_getDisplayValue($id){
var element=document.getElementById($id),
style=window.getComputedStyle(元素);
返回样式.getPropertyValue('display');
}
/**
*切换aria属性
*@param{button}$此消息已通过
*@param{aria xx}属性要切换的aria属性
*@return{bool}from_ariaReturn
*/
函数_toggleAria($this,attribute){
$this.attr(属性、函数(索引、值){
返回'false'==值;
});
}
$(文档).ready(函数(){
infinity.params=typeof infinity10n===‘未定义’?“”:infinity10n;
if(typeof infinity.params!=“未定义”){
无穷大;
}
});
})(文档,jQuery)
谢谢大家!
更新:我仍然没有解决这个问题的方法——这是我在这里的第一个问题,我做得对吗?我没有测试它,但是这个javascript应该可以解决这个问题
$(function(){
$('#genesis-nav-primary li').click(function()
{
$('nav.nav-primary').slideToggle('fast');
});
});
因此,您的javascript文件如下所示:
(function(document, $, undefined) {
// Add js body class when javascript is enabled
$('body').addClass('js');
// Add accessibility menu
'use strict';
var infinity = {},
mainMenuButtonClass = 'menu-toggle',
subMenuButtonClass = 'sub-menu-toggle';
infinity.init = function() {
var toggleButtons = {
menu: $('<button />', {
'class': mainMenuButtonClass,
'aria-expanded': false,
'aria-pressed': false,
'role': 'button'
})
.append(infinity.params.mainMenu),
submenu: $('<button />', {
'class': subMenuButtonClass,
'aria-expanded': false,
'aria-pressed': false,
'role': 'button'
})
.append($('<span />', {
'class': 'screen-reader-text',
text: infinity.params.subMenu
}))
};
$('.nav-primary').before(toggleButtons.menu); // add the main nav buttons
$('nav .sub-menu').before(toggleButtons.submenu); // add the submenu nav buttons
$('.' + mainMenuButtonClass).each(_addClassID);
$('.' + mainMenuButtonClass).addClass('ionicons-before ion-drag');
$('.' + subMenuButtonClass).addClass('ionicons-before ion-chevron-down');
$(window).on('resize.infinity',
_doResize).triggerHandler('resize.infinity');
$('.' + mainMenuButtonClass).on('click.infinity-mainbutton', _mainmenuToggle);
$('.' + subMenuButtonClass).on('click.infinity-subbutton', _submenuToggle);
};
// add nav class and ID to related button
function _addClassID() {
var $this = $(this),
nav = $this.next('nav'),
id = 'class';
$this.addClass($(nav).attr('class'));
if ($(nav).attr('id')) {
id = 'id';
}
$this.attr('id', 'mobile-' + $(nav).attr(id));
}
// Change Skiplinks and Superfish
function _doResize() {
var buttons = $('button[id^=mobile-]').attr('id');
if (typeof buttons === 'undefined') {
return;
}
_superfishToggle(buttons);
_changeSkipLink(buttons);
_maybeClose(buttons);
}
/**
* action to happen when the main menu button is clicked
*/
function _mainmenuToggle() {
var $this = $(this);
_toggleAria($this, 'aria-pressed');
_toggleAria($this, 'aria-expanded');
$this.toggleClass('activated');
$('nav.nav-primary').slideToggle('fast'); //changed to .nav-primary since we're not toggling .nav-secondary
}
/**
* action for submenu toggles
*/
function _submenuToggle() {
var $this = $(this),
others = $this.closest('.menu-item').siblings();
_toggleAria($this, 'aria-pressed');
_toggleAria($this, 'aria-expanded');
$this.toggleClass('activated');
$this.next('.sub-menu').slideToggle('fast');
others.find('.' + subMenuButtonClass).removeClass('activated').attr('aria-pressed', 'false');
others.find('.sub-menu').slideUp('fast');
}
/**
* activate/deactivate superfish
*/
function _superfishToggle(buttons) {
if (typeof $('.js-superfish').superfish !== 'function') {
return;
}
if ('none' === _getDisplayValue(buttons)) {
$('.js-superfish').superfish({
'delay': 100,
'animation': {
'opacity': 'show',
'height': 'show'
},
'dropShadows': false
});
} else {
$('.js-superfish').superfish('destroy');
}
}
/**
* modify skip links to match mobile buttons
*/
function _changeSkipLink(buttons) {
var startLink = 'genesis-nav',
endLink = 'mobile-genesis-nav';
if ('none' === _getDisplayValue(buttons)) {
startLink = 'mobile-genesis-nav';
endLink = 'genesis-nav';
}
$('.genesis-skip-link a[href^="#' + startLink + '"]').each(function() {
var link = $(this).attr('href');
link = link.replace(startLink, endLink);
$(this).attr('href', link);
});
}
function _maybeClose(buttons) {
if ('none' !== _getDisplayValue(buttons)) {
return;
}
$('.menu-toggle, .sub-menu-toggle')
.removeClass('activated')
.attr('aria-expanded', false)
.attr('aria-pressed', false);
$('nav, .sub-menu')
.attr('style', '');
}
/**
* generic function to get the display value of an element
* @param {id} $id ID to check
* @return {string} CSS value of display property
*/
function _getDisplayValue($id) {
var element = document.getElementById($id),
style = window.getComputedStyle(element);
return style.getPropertyValue('display');
}
/**
* Toggle aria attributes
* @param {button} $this passed through
* @param {aria-xx} attribute aria attribute to toggle
* @return {bool} from _ariaReturn
*/
function _toggleAria($this, attribute) {
$this.attr(attribute, function(index, value) {
return 'false' === value;
});
}
$(function(){
$('#genesis-nav-primary li').click(function()
{
$('nav.nav-primary').slideToggle('fast');
});
});
$(document).ready(function() {
infinity.params = typeof InfinityL10n === 'undefined' ? '' : InfinityL10n;
if (typeof infinity.params !== 'undefined') {
infinity.init();
}
});
})(document, jQuery);
(函数(文档,$,未定义){
//启用javascript时添加js主体类
$('body').addClass('js');
//添加辅助功能菜单
"严格使用",;
变量无穷={},
mainMenuButtonClass='菜单切换',
子菜单按钮类='子菜单切换';
infinity.init=函数(){
变量切换按钮={
菜单:$(''{
“类”:mainMenuButtonClass,
"咏叹调":错,,
“咏叹调