3

これら 2 つのサイトの指示に基づいて、MarkItUp と Jeditable をうまく統合することができました。しかし、私が本当にやりたいことは、Jeditable/MarkItUp 編集ウィンドウを Thickbox または Lightbox オーバーレイに表示することです。これまでのところ、これを行う私の試みは成功していません。

したがって、現時点では、標準コードがあります。

$.editable.addInputType('markitup', {
    element : $.editable.types.textarea.element,
    plugin  : function(settings, original) {
        $('textarea', this).markItUp(settings.markitup);
    }
});

$(".editme").editable("/content/save", {
    event   : 'dblclick',
    type      : 'markitup',
    submit    : 'OK',
    cancel    : 'Cancel',
    width     : 640,
    height    : 'auto',
    tooltip   : 'Double-click to edit...',
    onblur    : 'ignore',
    markitup  : mySettings
});

オブジェクト自体ではなくリンクをクリックして編集ボックスをトリガーする方法を示す他の投稿をここで見つけました。それをThickbox呼び出しと統合しようとしましたが、役に立ちませんでした。

誰かが私を正しい方向に向けてくれてありがとう。ありがとう!

4

1 に答える 1

2

あなたの問題は、おそらく jeditable と markitup のイベントが「ライブ」イベントではないことに起因します。

あなた (またはあなたのプラグイン) がドキュメントの読み込み時に特定の要素にイベントをバインドすると、それらのイベントは現在 dom にある要素にのみバインドされます。後で要素が DOM (ページ) に追加された場合 (thickbox/lightbox プラグインの場合のように)、イベントは新しい dom 要素にバインドされません。

これに対する解決策は、通常の状況では、jquery のライブ イベントを使用することです。しかし、使用しているプラ​​グイン (jeditable および markitup) がおそらくバインドを行っているため、イベントをライブでバインドする直接的なオプションはありません。jquery ライブ イベント コードは通常、次のようなものです。

$('a.cool').live('click',function(){
    // Do something cool
});

この場合、後で要素が DOM に追加されたとしても、イベントはそれ自体にバインドされます。

あなたの解決策は、jeditableとmarkitupのためにjquery liveのトピックをグーグルで検索するか(私はしましたが、何も見つかりませんでした)、自分でコードにアクセスすることです。私は jeditable を見ましたが、そこは簡単です。変更する必要があるコードは次のとおりです。

// Change this:
$(this).bind(settings.event, function(e) {
// Into this:
$(this).live(settings.event, function(e) {

unbind 関数も変更する必要があります。

// change this:
.unbind($(this).data('event.editable'))
// Into this:
.die($(this).data('event.editable'))

このプロセスはおそらくマークアップに似ています。私は見ていませんでした。

于 2010-04-01T19:16:20.693 に答える