2013-06-07 8 views
7

Ich konnte nicht herausfinden, wie manuell DOM-Ereignisse ausgelöst werden. Hier zum Beispiel ist mein Versuch, das „Klick“ Ereignis für eine liSencha: Wie Klick Ereignis auf li-Element auslösen

Ext.DomQuery.select('#mapRoutesPanel ol li:nth-child('+(index+1)+')')[0].click(); 

Es funktioniert gut auf Google Chrome zu schießen, aber wenn ich Android native App von derselben Anwendung bauen es mir

gibt Fehler
Uncaught TypeError: Object #<HTMLLIElement> has no method 'click' 
+0

Haben Sie versucht, http://stackoverflow.com/questions/16145882/extjs-manually-firing-click-event-button-param-is-different-from -Mausklick ? –

Antwort

-2

Ich tat wie unten in meinem Fall.

Unten ist der Beispiel-HTML-Code von div mit li s.

<div class="menu1" id="menu1"> 
    <ul> 
    <li id="students_tab">Students</li> 
    <li id="emps_tab">Employees</li> 
    </ul> 
</div> 

Und unten ist der Extjs-Code zum Hinzufügen von Click-Ereignis zu li-Element.

<script type="text/javascript"> 
    Ext.onReady(function(){ 
    var tabs= Ext.query("li", "menu1"); 
    Ext.each(tabs, function(item){ 
     var el = Ext.get(item); 
     el.on("click", function(){ 
      var tabName = this.id.substr(0, this.id.indexOf("_")); 
      alert("U have clicked on "+ tabName + " tab"); 
     }); 
    }); 
    }); 
</script> 
0

Nicht alle Touch-Browser/Apps unterstützen das Klickereignis, da es sich um ein Mausereignis handelt. Warum versuchen Sie nicht, das normierte Ereignissystem von Sencha zu verwenden, um einen Klick-Handler an die Komponente zu binden? Dann können Sie überprüfen, ob die < li/> im Click-Ereignishandler der Komponente geklickt wurde.

Sencha hat bereits die Arbeit für uns erledigt, so können wir klickt & Armaturen auf die gleiche Weise, so nutzen Sie es aus.

Btw, Ereignisdelegierung von einem übergeordneten Element ist normalerweise performanter als bindende Ereignishandler zu einer Reihe von verschiedenen DOM-Elementen. Es sieht aus wie Ihre Bindungsereignisse an Elemente in einer Schleife, dies ist eine schlechte Übung. Ich wollte das nur darauf hinweisen.

Hier ist ein Codebeispiel:

var cmp = Ext.getCmp('someComponentId'); 
cmp.on('click', function(me, event) { 
    if (event.currentTarget.tagName == "LI") { 
     // do something since the <li/> tag was clicked. 
     // event.currentTarget will be the <li/> DOM element, 
     // feel free to do with it as you please :) 
    } 
}