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