2013-02-11 78 views
2

我在我的应用程序中使用了CKEDITOR 4。在ckeditor中查找并替换html(不仅是文本)?

这里我有一个特定类型的标签,让我们说'TagX'。

我需要添加一个'id'属性给那些没有id的TagX标签。

我一直在使用修整:

content = EditorInstance.getData(); 
var pattRegex = /<(tagx)(?![^<>]*\bid=).*?<\/\1>/gi; 
var arrTagsX = content.match(pattRegex); 
for (i = 0; i < arrTagsX.length; i++) { 
    content = content.replace("<tagx", <tagx id=\"id_" + i + "\""); 
} 
EditorInstance.setData(content); 

其工作正常,但内容大小是非常大的,所以我想避免setData();

我想找东西来找到html(不仅是文本),并用html + id替换html。

+0

请检查我的答案,如果你的作品。 – Valky 2013-02-11 14:14:10

回答

3

为什么不使用$('tagx'),然后使用$(this)在显示后再做你的员工?

所以,让我们给该作业的jQuery的东西,如以下

var i=0; 
$('tagx').each(function(){ 
    i++; 
    $(this).attr('id','id_'+i); 
}); 

关于你的其他评论编辑

让我们来测试,如果:not([id])

var i=0; 
$('tagx:not([id])').each(function(){ 
     i++; 
     $(this).attr('id','id_'+i); 
}); 
+0

雅是真的......但我认为它会通过所有的标签(其中有ID和没有ID)循环。和**我不想循环所有那些已经有id属性**的标签。 – pks 2013-02-11 13:24:47

+0

请看看我的编辑。 – Valky 2013-02-11 13:28:30

+0

你的Valky你的权利...... **但我想我没有正确解释我的观点...... **让我说我已经** 100 **号码的'tagx'和只有**最后(第100次)一个没有id **。所以根据上面的代码,我需要循环100次来修复ID ... **但我真的不想在这里循环100次**只有一个循环。这是这里的主要问题.. – pks 2013-02-11 13:34:56

1

最后我已经更新我的代码按照波纹管和其履行我的要求...

rootElement = EditorInstance.document.getElementsByTag("rootEle").getItem(0); 
var tagxEle = rootElement.$.getElementsByTagName('tagx'); 
var i=0; 
$(tagxEle).not('[id]').each(function(){ 
    i++;           
    $(this).attr('id','tagx_'+i); 
}); 

日Thnx Valky你的答案...

+0

+1不用客气 – Valky 2013-02-14 14:11:44