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();
})