1 /** 2 * @fileOverview render aria from menu according to current menuitem 3 * @author yiminghe@gmail.com 4 */ 5 KISSY.add("menu/menuRender", function(S, UA, Component) { 6 7 return Component.Render.extend({ 8 9 renderUI:function() { 10 var el = this.get("el"); 11 el .attr("role", "menu") 12 .attr("aria-haspopup", true); 13 if (!el.attr("id")) { 14 el.attr("id", S.guid("ks-menu")); 15 } 16 }, 17 18 _uiSetActiveItem:function(v) { 19 var el = this.get("el"); 20 if (v) { 21 var menuItemEl = v.get("el"), 22 id = menuItemEl.attr("id"); 23 el.attr("aria-activedescendant", id); 24 // 会打印重复 ,每个子菜单都会打印,然后冒泡至父菜单,再打印,和该 menuitem 所处层次有关系 25 //S.log("menuRender :" + el.attr("id") + " _uiSetActiveItem : " + v.get("content")); 26 } else { 27 el.attr("aria-activedescendant", ""); 28 //S.log("menuRender :" + el.attr("id") + " _uiSetActiveItem : " + ""); 29 } 30 }, 31 32 containsElement:function(element) { 33 var el = this.get("el"); 34 return el[0] === element || el.contains(element); 35 } 36 }, { 37 ATTRS:{ 38 activeItem:{} 39 } 40 }); 41 }, { 42 requires:['ua','component'] 43 });