2013-06-07 5 views
7

Мне не удалось выяснить, как вручную запускать события DOM. Вот, например, моя попытка уволить «нажать» событие для литийSencha: Как вызвать событие click на элементе li

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

Это работает отлично на Google Chrome, но когда я построить андроида родное приложение из одного приложения он дает мне ошибку

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

Пробовали ли вы http://stackoverflow.com/questions/16145882/extjs-manually-firing-click-event-button-param-is-different-from -маз-клик? –

ответ

-2

Я сделал, как показано ниже, в моем случае.

Ниже приведен пример html-кода div с ли.

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

И ниже - код extjs для добавления события click к элементу li.

<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

Не все браузеры/приложения для сенсорных устройств поддерживают событие click, потому что это событие мыши. Почему бы вам не попробовать использовать стандартную систему событий Sencha для привязки обработчика кликов к компоненту, тогда вы можете проверить, было ли нажато < li/> внутри обработчика события кликов компонента.

Sencha уже проделал работу для нас, чтобы мы могли обрабатывать клики & так же, как и использовать его.

Btw, делегирование событий из родительского элемента обычно более эффективно, чем привязка обработчиков событий к набору различных элементов DOM. Похоже, что ваши привязанные события к элементам в цикле, это плохая практика. Я просто хотел это указать.

Вот пример кода:

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 :) 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^