2014-12-04 93 views
1

我正在寫的CKEditor一個小插件,把JavaScript變量在其他變量的定義

上的一個按鈕點火,我試圖讓編輯器抓取原始的HTML數據發送到服務器。 正確的語法是

CKEDITOR.instances.div_id.getData();
或者
CKEDITOR.instances [div_id] .getData();

然而,這是抓住了一組名爲id,我希望它是相對於其父ID

var id = $(this).parent().attr("id"); 

var htmlcontent = CKEDITOR.instances.id.getData(); 

我意識到,我不知道如何在插入一個變量var而不用想這是一個功能在CKEDITOR下。我應該知道這一點,但它只是沒有到我這裏來。

據傳這可能不是一個工作父ID - 貪婪

編輯:爲了解決CKEDITOR問題(這是不容易在網絡上找到) CKEDITOR有一些內置的API來獲取容器元素ID。

這是一個工作的ID - 貪心的CKEDITOR插件和數據抓取語法幫由下面的答案構造:作爲

var id = editor.container.getId(); 
var htmlcontent = CKEDITOR.instances[id].getData(); 

2014年12月4日

+3

你寫上面的例子 - 'CKEDITOR.instances [ID] .getData()' – Cheery 2014-12-04 21:52:30

+0

@謝里 - 你應該把這個評論變成一個答案。 – 2014-12-04 21:54:11

+0

呵呵,如果這就是答案,那麼ckeditor問題可能會更深一些。但我會將其標記爲正確 – Kiwizoom 2014-12-04 21:57:01

回答

3

爲什麼不var htmlcontent = CKEDITOR.instances.id.getData();工作?其原因是,id是一個變量保存在該行

var id = $(this).parent().attr("id"); 

id變量保存的東西像它「myElementId」以前存儲的確切ID。爲了讓您使用該字符串,如果您未事先特別知道「myElementId」的名稱,則需要使用「括號表示法」(相關:Working with Objects MDN)訪問這些實例對象。

結果,這將工作

var htmlcontent = CKEDITOR.instances[id].getData(); 

而且將類似於CKEDITOR.instances.myElementId.getData()如果「myElementId」以前存儲的父元素的ID。

+0

感謝您的詳細解釋。這清除了語法混淆 – Kiwizoom 2014-12-04 21:59:55

0

如果你已經有了一個editor對象,你並不需要使用CKEDITOR.instances所有,只是用

​​