Как проверить классы узла внутри TinyMCE? - PullRequest
1 голос
/ 19 июля 2010

Я хочу проверить, есть ли у узла внутри TinyMCE класс, начинающийся со слова 'border'.Я пытался получить классы узла, используя

 tinyMCE.activeEditor.dom.getClasses();

, но он возвратил ноль.

Есть ли способ сделать это?Мне нужно выяснить, есть ли у узла какой-либо класс, начинающийся со слова 'border', если он затем заменяет этот класс другим.

1 Ответ

1 голос
/ 19 июля 2010

Нет проблем. Предполагая, что у вас есть только один узел в вашем редакторе, это:

class_string = tinyMCE.activeEditor.getBody().firstChild.class;

class_string_array = class_string.split(" ");

for (i=0; i < class_string_array.length; i++){
   if (class_string_array[i].search("border") !== -1) {
      alert("class found!");
      class_string_array[i] = "new_class";

      class_string = class_string_array.join(" ");
      tinyMCE.activeEditor.getBody().firstChild.setAttribute('class',class_string);

      break;      
   }
}

Гораздо проще использовать jQuery:

node = tinyMCE.activeEditor.getBody().firstChild;
if ( $(node).hasClass("border_xxx") ){ // need to check for explicit className
   $(node).removeClass("border_xxx");
   $(node).addClass("new_class");
} 

РЕДАКТИРОВАТЬ: Если вы хотите проверить для каждого узла внутри контента, вам нужно рекурсивно пройти через body-domtree и проверить для каждого узла:

function getTextNodesValues(tinymce,node) {
    if ( $(node).hasClass("border_xxx") ){ // need to check explicit className
       $(node).removeClass("border_xxx");
       $(node).addClass("new_class");
    } 

    for (var i=0; i<node.childNodes.length; i++) {
      el = node.childNodes[i];
      if ( $(node).hasClass("border_xxx") ){ // need to check explicit className
         $(node).removeClass("border_xxx");
         $(node).addClass("new_class");
      } 
      if (el.childNodes.length > 0) getTextNodesValues(tinymce,el);
    }
}

getTextNodesValues(tinymce, getTextNodesValues(tinymce,node) );

Должны получить все классы внутри редактора:

 tinyMCE.activeEditor.dom.getClasses();

но заменить их этой информацией нелегко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...