我正在使用Google和Markdown的Prettify,我希望每次在markdown pre
中添加textarea
代码时再次调用prettyPrint()
函数。
这是我的实际代码:
if($('#wmd-preview').length > 0) {
$('#wmd-preview').on('DOMNodeInserted DOMNodeRemoved',function(){
$(this).find("pre").not('.prettyprint').addClass("prettyprint");
});
}
但我想要的是:
$(this).find("pre").not('.prettyprint').addClass("prettyprint",function(){
prettyPrint();
});
有没有办法实现这个目标?
答案 0 :(得分:16)
你可以扩展.addClass()
jquery的方法让它接受一个回调函数:
;(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);
然后像往常一样使用它:
$('pre:not(.prettyprint)').addClass('prettyprint',prettyPrint);
答案 1 :(得分:9)
据我了解,你需要这个:
$(this).find("pre").not('.prettyprint').each(function(){
$(this).addClass("prettyprint");
prettyPrint();
})
答案 2 :(得分:2)
addClass
jQuery函数在参数中没有回调。
在documentation了解详情。
我认为这对你有用:
// prettyprint class is added
$(this).find("pre").not('.prettyprint').addClass("prettyprint");
// after prettyprint class is added, prettyPrint function is called
prettyPrint();