2015-07-20 36 views
0

我添加自定義工具欄按鈕,我的TinyMCE的這樣TinyMCE的自定義工具欄菜單項點擊觸發的所有父項的點擊事件

tinyMCE.init({ 
mode: "specific_textareas", 
editor_selector: "mceEditor", 
width: 600, 
toolbar_items_size: "small", 
plugins: ["advlist autolink lists link image charmap print preview anchor","searchreplace visualblocks code fullscreen","insertdatetime media table contextmenu paste "], 
toolbar: "undo redo | styleselect | bullist numlist outdent indent | link image | stats ", 
setup: function (editor) { 
editor.addButton('stats',{ 
    text: 'Stats', 
    type: 'menubutton', 
    icon: false, 
    menu: [ 
    { 
    text: 'item1', 
    selectable: 'false', 
    classes: 'noselect', 
    onclick: function() { editor.execCommand('mceInsertContent', false, '{rootValue}');}, 
    menu: [ 
    { 
    text: 'item1.1', 
    selectable: 'false', 
    classes: 'noselect', 
    onclick: function() { editor.execCommand('mceInsertContent', false, '{midValue}');}, 
    menu: [ 
    { 
    text: 'item1.1.1', 
    selectable: 'false', 
    classes: 'noselect', 
    onclick: function() { editor.execCommand('mceInsertContent', false, '{leafValue}');}, 
    }, 
    ] 
    }, 
    ] 
    }, 
    ] 
    });}}); 

所以我的按鈕是具有子菜單菜單,子菜單那些可以有子菜單等等,所以我有多個嵌套子菜單,每個子菜單都有一個onclick函數,可以在編輯器中插入一些文本。我遇到的問題是,當我點擊最內層的按鈕時,它會觸發根目錄樹中所有onclick事件。所以,如果我點擊按鈕應該插入{} leafValue,它插入這個

{leafValue}{midValue}{rootValue} 

很顯然,我想只插入leafValue這裏。這是一個已知的tinyMCE問題嗎?任何人都知道我該如何解決它?

回答

1

您能使用preventDefault()

onclick:function (evt) { 
    editor.execCommand('mceInsertContent', false, '{leafValue}'); 
    evt.preventDefault(); 
} 

MDN:http://api.jquery.com/event.preventdefault/#event-preventDefault

+0

嘗試這樣做,但它沒有工作(仍然將所有不需要的文本)。可能是因爲onclick函數是由tinyMCE內部處理的。 – Adrian

+0

沒關係,我忘了添加源對象作爲函數參數。它現在有效!謝謝! – Adrian