为什么 slicknav 不会使用由变量设置的 ID 参与我的 jquery 对象

Why won't slicknav engage on my jquery object with an ID set by a variable?

本文关键字:ID 我的 对象 jquery 设置 变量 slicknav 为什么      更新时间:2023-09-26

我正在尝试在动态构建的jquery对象上激活slicknav。

这很可爱:

(function($){
var mobilemenu={
     slicknavEngage: function(){
         $(mobileMenuIdentifier).slicknav();
     }
}
var rebuildmenu={
    start:function(){
        var $menuParent = //some stuff I need to build menu
            $menuCategories = //more stuff I need for new menu
            $newMenu = $('<div>').attr('id','new-menu'); //my new menu object
            $menuCategories.each(function(i){
                 //build my new menu
            });
        $newMenu.appendTo('body');
        mobilemenu.slicknavEngage();
    }   
}
$(document).ready(rebuildmenu.start);
})(jQuery);
但是

我希望能够像这样将移动菜单标识符设置为闭包顶部的配置变量,不幸的是它不起作用,但是我已经从许多位置运行了控制台.log并且始终显示正确的变量,为什么它不以这种方式工作?这只是脚本的一小部分,因为必须设置许多其他配置变量,因此我希望能够设置这个变量。可能出了什么问题?

 (function($){
    //global to this closure
    var     mobileMenuIdentifier = '#new-menu';

    var mobilemenu={
         slicknavEngage: function(){
             $(mobileMenuIdentifier).slicknav();
         }
    }
    var rebuildmenu={
        start:function(){
            var $menuParent = //some stuff I need to build menu
                $menuCategories = //more stuff I need for new menu
                $newMenu = $('<div>').attr('id',mobileMenuIdentifier); //my new menu object with the id set by variable - doesn't work!
                $menuCategories.each(function(i){
                     //build my new menu
                });
            $newMenu.appendTo('body');
            mobilemenu.slicknavEngage();
        }   
    }
    $(document).ready(rebuildmenu.start);
    })(jQuery);

mobileMenuIdentifier包含 CSS 选择器#new-menu。如果设置 ID,则不希望#成为 ID 值的一部分。只需对代码进行最少的更改,您就可以执行

$('<div>').attr('id',mobileMenuIdentifier.substr(1)); // "new-menu", not "#new-menu"