jQuery .Text()方法返回在其他功能中变成NAN



我正在尝试修改Prestashop移动导航,并且遇到了一些困难试图用包含主要类别标题的新元素附加子类别列表。标题写为nan。


代码:

$('#maincategories > li').children('a').each(function() {
        //here i remove original navigation icons so they wont get into title String.
        $(this).children('span').remove();
        var str = $(this).text().toString().replace(" ","");
        var generateSubmenuTrigger = function(action) {
            if (action == 'show') {
                var triggerClass = 'showSubnav',
                var parentTitle = "";
            } else if (action == 'hide') {
                var triggerClass = 'hideSubnav';
                var parentTitle = str;
            };
            return '<a class="msubnav '+ class +'">'+
                       +parentTitle+
                   '</a>';
        };
        $(this).parent('li').append(generateSubmenuTrigger('show'));
        $(this).parent('li').children('div').children('ul').append(generateSubmenuTrigger('hide'))
    });

我一直在使用Console.log检查parentTitle字符串,这一切都很好,直到我将其推入generateSubmenuTrigger功能。如果有人可以解释为什么它变成NAN以及如何修复它,那真的很好。

原因是在此返回语句中:

       return '<a class="msubnav '+ class +'">'+
                   +parentTitle+
               '</a>';

您在a标签和parentTitle之间有两个优点。删除其中一个。

顺便说一句,我看不到任何地方的class定义。请注意,命名变量class也可能导致意外行为,因为它是JS中的一个保留单词。

我也将用$(this).text()替换$(this).text().toString(),因为.toString()无论如何都是无用的。

最新更新