Javascript 折叠定位链接上的Wordpress移动菜单单击

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 = {

在我的一页网站上点击导航链接后,我试图关闭我的汉堡包菜单。该网站使用的是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 = {},
    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,
"咏叹调":错,,
“咏叹调