私はPrettify from Googleと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();
});
これを達成するための可能な方法はありますか?
私が理解している限り、あなたはこれが必要です:
$(this).find("pre").not('.prettyprint').each(function(){
$(this).addClass("prettyprint");
prettyPrint();
})
.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);
addClass
jQuery関数の引数にはコールバックがありません。
これについての詳細は documentation をご覧ください。
これはうまくいくと思います:
// prettyprint class is added
$(this).find("pre").not('.prettyprint').addClass("prettyprint");
// after prettyprint class is added, prettyPrint function is called
prettyPrint();