2010-11-09 7 views
9

Je veux ajouter plusieurs classes au widget ci-dessous à des fins de style:Comment ajouter une classe à un widget dojo?

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

Comment pourrais-je accomplir cela?

Voici le code html réelle:

<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> 

Répondre

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

Cela gère également les situations dans lesquelles un noeud DOM contient déjà « youClass » en tant que classe CSS de sorte que les doublons ne sont pas ajoutés. dojo fournit également d'autres méthodes pour gérer la gestion des classes CSS avec dojo.removeClass() et dojo.toggleClass().

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

+0

il serait donc dojo.addClass (filteringSelect.test, "ClassName"); ou serait-ce l'étiquette d'entrée? – Amen

+0

non, vous devriez faire filteringSelect.domNode parce que la propriété domNode fournit une référence au nœud DOM réel dans votre code HTML. filteringSelect.test donnerait un NPE. – linusthe3rd

+0

En outre, filteringSelect fournit une référence à un widget dijit, qui vous fournit un tas de méthodes API dijit - pas l'élément DOM HTML réel. – linusthe3rd

1

méthodes de travail complémentaires:

(1) La version procédurale, ce qui crée le widget de script:

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

(2) Si vous définissez simplement l'attribut "classe", il appellera dans le dijit/_WidgetBase.js la fonction de réglage _setClassAttr, qui fait exactement ce que vous voulez:

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

(3) Vous pouvez définir les propriétés du dojo du widget, comme ici:

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