我正在使用Dmxzones高级HTML编辑器3,它插入以下代码:
<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,虽然我自己尝试了很多东西,但似乎无法访问编辑器创建的任何元素。
答案 0 :(得分:1)
从this回答借用一点,并根据您提供的链接,您应该执行以下操作:
如果要为所有匹配的类应用一致的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");
仅当span
的新文字取决于class
名称时,才使用第二个示例。
修改强> 根据您在页面中提供的示例,您可以写下:
ifrm.find("p.codeblock").text("new text");