javascript - Javascript 对象之间的比较

标签 javascript jquery

我使用 jQuery 为我的网站制作了一个简单的 Accordion ...效果很好,但我最近开始进行更改,如果您单击当前打开的分段标题(可单击区域向上/向下滑动) , 它应该关闭当前部分。

var sideMenu = {
        activated: {},
        setup: function() {
        $('.menu-category-heading').bind('click', function() { 
                                                      sideMenu.slideMenu($('ul', $(this).parent()));
                                                      });

        }, 

        slideMenu: function(menuObj) {

            if (sideMenu.activated == menuObj) {

                $(sideMenu.activated).slideUp(400);
                sideMenu.activated = null;
                console.log('same');

            } else {

                $(sideMenu.activated).slideUp(400);
                menuObj.slideDown(500);
                sideMenu.activated = menuObj;
                console.log('new');
            }
        }


    }

出于某种原因,比较永远不会起作用...如果我添加 $(menuObj).attr('id') 并且相同的激活。但这并不理想,因为并非所有项目都具有 id 属性。

关于使对象比较工作有什么建议吗?或者有什么其他技巧吗?

谢谢!

最佳答案

您可能正在保存一个 jQuery 对象($ 调用的结果)而不是 native 元素。每次执行 $(myEl) 时都会创建一个新对象,并且引用不会匹配,但 native 元素会匹配。尝试:

if (slideMenu.activated[0] == menuObj[0]) {
    ...
}

关于javascript - Javascript 对象之间的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/449176/

相关文章:

javascript - 如何在 Windows 上打包 NW.js 应用程序

javascript - 如何在 Ajax 调用后使用标记渲染 Google map

javascript - 意外的 token JSON.parse

events - jQuery .on() 事件不适用于动态添加的元素

javascript - Material ui appbar 在移动设备上不会缩小

javascript - SAPUI5:将 Controller 属性绑定(bind)到 View

javascript - 获取 CKEditor 内容? -jQuery

jquery - 根据屏幕尺寸更改 bxslider 上的幻灯片数量

javascript - Node 模块 - 导出变量还是导出引用它的函数?

jquery - 从外部页面中提取元素的内容