2016-02-12 2 views
2

Моя проблема похожа на thisКак укладывать выпадающее меню программного dijit.form.select

Разница заключается в том, что не существует в моем dijit.form.Select нет id. Идентификатор - тот, который назначается самим додзё. Итак, как мне достичь результата, как в связанном вопросе?

Edit: Я могу добавить пользовательский класс к dijit.form.Select

один метод, который я мог понять, чтобы использовать что-то вроде:

div[dijitpopupparent ^= "dijit_form_Select"] > .dijitMenu{ 
    ... 
} 

, который будет работать как регулярное выражение для CSS. Но он применит CSS ко всем элементам dijit.form.Select во всем приложении, которое я не хочу.

ответ

0

Вы упомянули, что вы можете добавить определенный класс в dijit.form.Select, по Exemple добавить .myClass (мы будем использовать его позже) затем создать конкретные CSS, который будет применен к сНу всплывающего окна

CSS

.stylePopup { 
    max-height: 25px; 
    overflow-y: scroll !important; 
    border:1px solid #f00; 
    /* other styles tuff ... */ 
} 

тогда вы будете добавить этот класс всплывающей DIV из dijit.form.Select которого имеет выше класс programmaticly, обернув по всему dijits, чем если Dijit есть «myClass» класс затем добавить к это всплывающее окно ДИВ stylePopup класс (код в Dojo стиле AMD 1.7+)

require([ 
    "dojo/ready", 
    "dijit/registry", 
    "dojo/dom", 
    "dojo/_base/array", 
    "dojo/dom-class" 
], function(
    ready, 
    registry, 
    dom, 
    array, 
    domClass 
) { 

ready(function() { 
    var selectDijitClass = "myClass"; 
    var classToApply = "stylePopup"; 

    array.forEach(registry.toArray(),function(widget){ 
    console.log(widget); 
    if(widget.declaredClass === "dijit.form.Select" && widget.class === selectDijitClass){ 
     console.log(registry.byId(widget.id+"_menu").domNode.parentNode); 
     widget.on("click",function(e){ 
     e.preventDefault(); 
     if(dom.byId(this.id+"_dropdown")){ 
      if(!domClass.contains(dom.byId(this.id+"_dropdown"), classToApply)) 
       domClass.add(dom.byId(this.id+"_dropdown"),classToApply); 
     } 

     }); 
    } 
    }); 

}); 
}); 

Вот Fiddle

+0

То, что вы говорите, верно и справедливо только для пример, который вы упомянули. Но в моем случае есть еще много виджетов, а виджет 'dijit.form.Select' и' dijitPopup' ** ** ** рядом. Они очень сильно разделены. – Himanshu

+0

почему бы не добавить Id, иначе вам нужно сделать программное решение! –

+0

@ Химаншу Я предложил программный способ вашей проблемы –