2017-12-18 15 views
0

私は多くのドキュメントや例を見てきましたが、答えが見つかりませんでした。ここに私の問題だ、私はCKEditorバージョンstylesSet内部に次のコードを持っている:以前のものを削除せずに別のスタイルを追加する(CKEditor 4)

{name: 'Full Column Photo', element: 'img', attributes: { 'class': 'full- 
column' }, childRule: function(element) { 
    return !element.is('img'); 
}}, 
{ name: 'Disable Image Popup', element: 'img', attributes: { 'class': 
'disable-popup' }, childRule: function(element) { 
return !element.is('img'); 
} }, 

私はスタイル/クラス「.full列を」持っている要素を持っているし、その後スタイル/クラス」.DISABLE-ポップアップを追加する場合"同じ要素には、" .full-column "が削除されます。要素の両方のクラスを保持するにはどうすればよいですか?以前に選択されていたスタイル/クラスのみを削除するにはどうしたらいいですか?

答えて

0

JavaScriptでは、classListプロパティを使用して、要素を既存のクラスリストに追加できます。このプロパティは、add関数を公開しています。この関数を使用して、新しいクラス名をリストに追加できます。

まず、操作したいDOM要素への参照を取得する必要があります。

const el = document.getElementById('some-element'); 

次後であなたがremove機能を使用することができ、クラスを削除したい場合は、要素別

el.classList.add('new-class'); 

にしたいクラスを追加することができます。

el.classList.remove('new-class'); 

編集:あなたのコメントを踏まえて、あなたが持っているオブジェクトを返す関数としてattributes.classプロパティを指定することができるだろう。何かのように:

{ 
    name: 'Disable Image Popup', 
    element: 'img', 
    attributes: { 
      'class': function() { 
      element.addClass('disable-popup'); 
      return ''; 
     } 
    }, 
    childRule: function(element) { 
     return !element.is('img'); 
    } 
} 

変なふうに、私は、要素、スタイルのみまたはhasClass()機能にCKEDITOR.dom.elementクラスを返す関数があるとは思いません。

+0

ありがとうございました! CKEditor内でこの機能を利用する方法は何でしょうか?クラスの追加/削除はstylesSetと同じように動作しますが、どうにかしてこのclassListプロパティを追加する必要があります。 – nikoka

+0

私は自分のソリューションを更新しました。多分それはうまくいくでしょうか? –

+0

ありがとうございました。残念ながら、Uncaught SyntaxError:予期しないトークン{" – nikoka

関連する問題