2016-06-21 7 views
0

私はDrupal用の独自のプラグインを作成しています。変更イベントのAPIで次のコードを確認しました:CKEditor - 変更されたコンテンツと周囲のHTMLタグを取得します

editor.on('change', function (evt) { 
    console.log(this.getData()); 
    }); 

変更すると、エディタ内のすべてのデータが表示されます。私はカスタムHTMLタグ(いくつかのデータ属性を持つ)でコンテンツを構成しています。私の質問は、ユーザーがいくつかのコンテンツを書く場合、どうすれば最も近いタグを取得できますか?したがって、変更されたデータ属性を追加できますか?

また、すべてのキーストロークでトリガーしないように、ある種のタイマー/遅延が必要ですか?

答えて

0

表示されたコードはjQueryコードです。あなたは、エディタ上でchangeイベントを発生させる関数を作成しました。ユーザーがエディターで何かを変更するたびに発生します。これを避けるために、あなたはこのような何かを行うことができます。それはクリアされます

if (editorTimer.length) { 
    clearTimeout(editorTimer); 
} 
editorTimer = setTimeout(function() { 
    console.log(this.getData()); 
}, 1000); 

:にあなたの関数を変更し、その後

var editorTimer = null; 

は(あなたの関数の前に)親スコープでグローバル変数を追加します最後のタイマーを実行し、各変更後に1000ms(1s)待機して内部の関数を起動します。 ユーザーが1秒間何も変更しない場合、その関数が呼び出されます。

今、機能を準備し、console.log()を動作するものに変更する必要があります。タグを検索するには、jQueryセレクタを使用してください:http://api.jquery.com/category/selectors/

like .closest()または.parents()または.find()は、あなたが何をしたいかによって異なります。

+0

ありがとうございました。その後、getSelection()およびgetRanges()を使用して、親要素に属性を設定しました。 –

+0

私の答えが役に立ったら、それに投票して回答してください。 –

関連する問題