2013-07-23 71 views
1

我試圖在onselect事件中獲取項目'data-id'屬性,但沒有運氣。如何從tinymce listbox控件項目中獲取屬性值

這裏我的代碼:

createControl: function (n, cm) { 
     switch (n) { 
      case 'ColorTextBox': 
       var mlb = cm.createListBox('ColorTextBox', { 
        title: 'color texto', 
        onselect: function (v) { 
         var ed = tinymce.activeEditor; 
         ed.formatter.register('custom_format', { inline: 'span', styles: { color: '%value' }, classes: 'color_text', attributes: { 'data-color': '%value' } }); 
         ed.formatter.apply('custom_format', { value: v }); 
        } 
       }); 

       for (i in CssStyles.colors.text) { 
        mlb.add('color texto #' + i, CssStyles.colors.text[i], attributes = { 'data-id': i }); //-> Is this attribute reachable from onselect event or is there a way? 
       } 

       return mlb; 
       break; 
      } 
     } 
    } 

有什麼建議?非常感謝你。

回答

0

好的,解決了。方法是通過從mlb對象迭代來獲得與列表項中相同的屬性data-id。 也許不是最好的方法,但目前,我找不到更好的方法。

下面是修改代碼:

createControl: function (n, cm) { 
    switch (n) { 
     case 'ColorTextBox': 
      var mlb = cm.createListBox('ColorTextBox', { 
       title: 'color texto', 
       onselect: function (v) { 
        var ed = tinymce.activeEditor; 
        var id; 

        for (i in mlb.items) { 
         if (mlb.items[i]['data-color'] == v) { 
          id = mlb.items[i]['data-id']; 
         } 
        } 

        ed.formatter.register('custom_format', { inline: 'span', styles: { color: '%value' }, classes: 'colors_text_' + id, attributes: { 'data-index': '%value' } }); 
        ed.formatter.apply('custom_format', { value: v }); 
       } 
      }); 

      for (i in CssStyles.colors.text) { 
       mlb.add('color texto #' + i, CssStyles.colors.text[i], attributes = { 'data-id': i, 'data-color': CssStyles.colors.text[i] }); 
      } 

      return mlb; 
      break; 
     } 
    } 
} 

希望對大家有所幫助。問候。