No puedo entender por qué no funciona, hice un código similar, pero no funciona, no puedo entender por qué, la clase y el atributo se agregan al botón, pero el programa de eventos no se activa y es imposible agregar una clase al elemento popup_cart como si no existiera
$(document).ready(function(){ $(document).on("click", "#user_panel", function(){ if(typeof $(this).attr('click') === "undefined"){ $(this).attr('click', 'active' ); $(this).addClass('active_e'); $('#popup_user_panel').show(); }else{ $(this).removeAttr('click', 'active' ); $(this).removeClass('active_e'); $('#popup_user_panel').hide(); } }); $(document).mouseup(function (e) { var container = $('.top_right_nav'); if (container.has(e.target).length === 0){ $('#user_panel').removeClass('active_e'); $('#user_panel').removeAttr('click', 'active' ); $('#popup_user_panel').hide(); } }); $(document).on("click", "#panel_bag", function(){ if(typeof $(this).attr('click') === "undefined"){ $(this).attr('click', 'active' ); $(this).addClass('active_e'); $('#popup_cart').show(); }else{ $(this).removeAttr('click', 'active' ); $(this).removeClass('active_e'); $('#popup_cart').hide(); } }); $(document).mouseup(function (e) { var container = $('.top_right_nav'); if (container.has(e.target).length === 0){ $('#panel_bag').removeClass('active_e'); $('#panel_bag').removeAttr('click', 'active' ); $('#popup_cart').hide(); } }); });
El problema está resuelto, en mi código el elemento está duplicado para las versiones móvil y completa del sitio. Gracias Tadas!