2010-11-09 19 views
9

Quiero añadir varias clases para el widget a continuación a efectos de estilo:¿Cómo agrego una clase a un widget de dojo?

var filteringSelect = new dijit.form.FilteringSelect({ 
    id: "test", 
}, 
"test"); 

¿Cómo voy a lograr esto?

Aquí es el HTML real:

<div tabindex="-1" wairole="combobox" dojoattachpoint="comboNode" dojoattachevent="onmouseenter:_onMouse,onmouseleave:_onMouse,onmousedown:_onMouse" id="widget_test" class="dijit dijitReset dijitInlineTable dijitLeft dijitComboBox" role="combobox" widgetid="test"> 
     <div style="overflow: hidden;"> 
      <div dojoattachevent="onmousedown:_onArrowMouseDown,onmouseup:_onMouse,onmouseenter:_onMouse,onmouseleave:_onMouse" wairole="presentation" dojoattachpoint="downArrowNode" class="dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton" role="presentation"> 
       <div class="dijitArrowButtonInner"> 
        &thinsp; 
       </div> 
       <div class="dijitArrowButtonChar"> 
        ▼ 
       </div> 
      </div> 
      <div class="dijitReset dijitValidationIcon"> 
       <br> 
      </div> 
      <div class="dijitReset dijitValidationIconText"> 
       Χ 
      </div> 
      <div class="dijitReset dijitInputField"> 
       <input type="text" waistate="haspopup-true,autocomplete-list" wairole="textbox" dojoattachpoint="textbox,focusNode" dojoattachevent="onkeypress:_onKeyPress,compositionend" class="dijitReset" autocomplete="off" role="textbox" aria-haspopup="true" aria-autocomplete="list" aria-invalid="false" id="test" tabindex="0" aria-required="true" value="United States"><input type="text" style="display: none;" name=""> 
      </div> 
     </div> 
    </div> 

Respuesta

9
dojo.addClass(filteringSelect.domNode, "yourClass"); 

Esto también se ocupa de las situaciones en las que un nodo DOM ya contiene "youClass" como una clase CSS de manera que no se añaden los duplicados. dojo también proporciona otros métodos para manejar la gestión de clase CSS con dojo.removeClass() y dojo.toggleClass().

http://staging.dojotoolkit.org/reference-guide/dojo/addClass.html

+0

por lo que sería dojo.addClass (filteringSelect.test, "nombre de clase"); o sería la etiqueta de entrada? – Amen

+0

no, debe hacer filterteringSelect.domNode porque la propiedad domNode proporciona una referencia al nodo DOM real en su HTML. filteringSelect.test daría como resultado un NPE. – linusthe3rd

+0

Además, filteringSelect proporciona una referencia a un widget de dijit, que le proporciona un montón de métodos dijit API, no el elemento HTML DOM real. – linusthe3rd

1

métodos adicionales de trabajo:

(1) La versión de procedimiento, de crear el control de secuencia de comandos:

var filteringSelect = new dijit.form.FilteringSelect({ 
    id: "test", 
    class: "myClassName" 
}, 
"test"); 

(2) Si se establece simplemente el atributo "clase", llamará a la dijit/_WidgetBase.js la función setter _setClassAttr, que hace exactamente lo que desea:

<div data-dojo-type="dijit/form/SomeThing" class="myClassName"></div> 

(3) Es posible ajustar las propiedades del dojo del widget, como en este caso:

<div data-dojo-type="dijit/form/SomeThing" data-dojo-props="class: 'myClassName'"></div> 
Cuestiones relacionadas