0

次のコードを挿入するDmxzonesAdvancedHTMLEditor3を使用しています。

<textarea id="advHTMLEdit1" name="advHTMLEdit1" class="dmxEditor" style="width:700px;height:300px"></textarea>

 jQuery(document).ready(
   function()
     {
       jQuery("#advHTMLEdit1").dmxEditor(
         {"width": 700, "lineBreak": "p", "allowUpload": true, "uploadPath": "tmp", "subFolder": "1", "uploadProcessor": "php", "allowResize": true, "includeCss": "tutorial.css", "skin": "blue"
       );
     }
 );

javascript execCommand()を使用して要素を挿入し、それらの要素にクラススタイルを適用します。

と:jQuery("#advHTMLEdit1")[0]

私はそれにアクセスできるようですが、私が試したことは何も私にchildNodesへのアクセスを与えません。エディターによって作成された各childNodeをループし、クラスにクエリを実行し、それが特定のclassNameである場合は、その要素のHTMLを置き換えられるようにしたいと思います。

私はjQueryを使用していません。自分で多くのことを試しましたが、エディターによって作成された要素にアクセスできないようです。

4

1 に答える 1

1

この回答から少し借りて、提供したリンクに基づいて、次のようなことを行う必要があります。

css一致するすべてのクラスに整合性を適用する場合:

var ifrm = $("#advHTMLEdit1").prev(".dmx-editor-frame-wrapper").find("iframe")[0];
ifrm = (ifrm.contentWindow) ? ifrm.contentWindow : (ifrm.contentDocument.document) ? ifrm.contentDocument.document : ifrm.contentDocument;
ifrm = $(ifrm.document);
ifrm.find(".yourClass").css("cssProperty", "cssValue");

cssすべての要素に異なるものを適用する場合:

var ifrm = $("#advHTMLEdit1").prev(".dmx-editor-frame-wrapper").find("iframe")[0];
ifrm = (ifrm.contentWindow) ? ifrm.contentWindow : (ifrm.contentDocument.document) ? ifrm.contentDocument.document : ifrm.contentDocument;
ifrm = $(ifrm.document);
var elem;
ifrm.find("body *").each(function(){
    elem = $(this);        
    if(elem.hasClass("yourClass") && elem.is("span")) {
        //elem.css("cssProperty", "cssValue");                
        elem.text("new text");
    }
});

特定のクラスを持つすべてのスパンのテキストを変更したい場合は、ループする必要がなく、はるかに短いコードで次のことを行うことができます。

ifrm.find("span.myClass").text("new text");

2番目の例は、の新しいテキストが名前にspan依存する場合にのみ使用してくださいclass

編集: あなたがあなたのページで提供した例に基づいて、あなたはただ書くことができます:

ifrm.find("p.codeblock").text("new text");
于 2012-06-14T11:44:29.990 に答える