remove div change and all jquery addclass

jquery - div - toggle class javascript



¿Cómo agregar una función de devolución de llamada al método addClass de jQuery? (3)

Estoy usando Prettify de Google y Markdown y quiero que cada vez que encuentre un código pre agregado en el área de textarea markdown llame nuevamente a la función prettyPrint() .

Este es mi código real:

if($(''#wmd-preview'').length > 0) { $(''#wmd-preview'').on(''DOMNodeInserted DOMNodeRemoved'',function(){ $(this).find("pre").not(''.prettyprint'').addClass("prettyprint"); }); }

Pero quiero algo como:

$(this).find("pre").not(''.prettyprint'').addClass("prettyprint",function(){ prettyPrint(); });

¿Hay alguna forma posible de lograr esto?


La función addClass jQuery no tiene devolución de llamada en los argumentos.

Lea más sobre esto en la documentation .

Creo que esto podría funcionar para usted:

// prettyprint class is added $(this).find("pre").not(''.prettyprint'').addClass("prettyprint"); // after prettyprint class is added, prettyPrint function is called prettyPrint();


Podrías extender el método .addClass() para permitirle aceptar una función de devolución de llamada:

;(function ($) { var oAddClass = $.fn.addClass; $.fn.addClass = function () { for (var i in arguments) { var arg = arguments[i]; if ( !! (arg && arg.constructor && arg.call && arg.apply)) { setTimeout(arg.bind(this)); delete arguments[i]; } } return oAddClass.apply(this, arguments); } })(jQuery);

Entonces úsalo como de costumbre:

$(''pre:not(.prettyprint)'').addClass(''prettyprint'',prettyPrint);


Por lo que yo entiendo, necesitas esto:

$(this).find("pre").not(''.prettyprint'').each(function(){ $(this).addClass("prettyprint"); prettyPrint(); })