Jquery添加Class并用作选择器?

时间:2015-03-02 15:42:22

标签: jquery html selector addclass removeclass

嘿所以我真的不确定我做错了什么,

基本上我有一个按钮'a #mobile_menu_btn'我正在添加一个类,'。active'然后我想用作选择器,但它不起作用。

 $('a#mobile_menu_btn').click(function () { 
        $('a#mobile_menu_btn').addClass('active');
        $('#mobile_nav').addClass('expand');
    });

 $('a#mobile_menu_btn.active').click(function () { 
         $('#mobile_nav').addClass('expand');
         $('a#mobile_menu_btn').removeClass('active');
        
    });

我无法使用切换,因为按钮执行其他功能所以我想保持简单,只需在适当时使用添加/删除类。

我尝试了各种各样的写作'$('a #mobile_menu_btn'); 包括;

$('a#mobile_menu_btn.active')
$('a#mobile_menu_btn .active')
$('span#mobile_menu_btn.active')
$('div#mobile_menu_btn.active')
$('a#mobile_menu_btn.active')

我哪里错了?提前致谢

1 个答案:

答案 0 :(得分:2)

正在动态添加课程。

您需要使用Event Delegation。您必须使用委托事件方法来使用.on()

一般语法

$(document).on(event, selector, eventHandler);

理想情况下,您应该使用最近的静态容器替换document以获得更好的性能。

$(document).on('click', 'a#mobile_menu_btn.active', function () { 
     $('#mobile_nav').addClass('expand');
     $('a#mobile_menu_btn').removeClass('active');
});

但是,您不需要事件委派,因为您可以使用.hasClass()

实现相同的目标
$('a#mobile_menu_btn').click(function () { 
    if($(this).hasClass('active')){
        $(this).removeClass('active');
    }else{
        $(this).addClass('active');
    }
});