用jQuery永久删除类并覆盖其他代码?

时间:2018-10-22 04:08:45

标签: javascript jquery css

我正在一个网站上进行一些默认的jquery设置,我试图覆盖它。它既庞大又复杂,因此我将尝试尽可能简单地进行解释。

我有一个称为“ dropdown-container”的div,在该div内是一个带有下拉列表的锚链接。删除了下拉式容器上的所有默认jquery类(例如“ ui-state-hover”等)。当页面加载时,这可以正常工作-删除所有那些默认的jquery类。但是,一旦我单击div中的anchor标签,这些类就会重新添加到我的“下拉容器”中,这弄乱了我要实现的目标。

有没有办法确保这些类永远不会被添加回我的“下拉容器”中,无论如何?

这是我的jquery代码:

    function mobileMainNav(){

        jQuery(".footer-menu-accordion").accordion({
            collapsible: true,
            active: ".level2-featured, .level3-featured, .level4-featured, .level4",
            autoHeight:false
        });

        $('.dropdown-container').removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-hover ui-state-active ui-corner-top");

        $('.dropdown-container').click(function(e){
            e.preventDefault();
            e.stopPropogation();
            $('.dropdown-container').removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-hover ui-state-active ui-corner-top");    
        })

        $('a.level-1.direct').click(function(e){
            window.location = $(this).attr('href');
        }); 

    };

1 个答案:

答案 0 :(得分:0)

您可以隐藏整个下拉列表容器,然后使用自己的下拉列表在控件之间映射值。这样,您就不必担心下拉菜单重新格式化。

另一个选择是包装一个计时器事件,该事件将不断轮询以重新出现一个类,然后将其删除。 YMMV提供的用户体验。

例如

function clearClass() {
  $(".ui-accordion-header").removeClass(".ui-accordion-header");
}
setInterval(clearClass, 1000);

最后,您可以删除顶级dropdown-container(也许给它一个类dropdown-container2)并更新必要的样式。我假设ui库正在检查dropdown-container类。