You can use event delegation.
//same code
store: 'Contact',
listeners: [{
element: 'element',
delegate: 'div.addressInfo',
event: 'tap',
fn: function() {
alert('addressInfo!');
// fire costume event here and handle it in controller.
}
}]
}
Update 1
Honestly i can't find best way to get record in delegate, But you can do like this.
In itemTpl do below changes for adding record id
'<div class="infoType addressInfo" recordId="{id}">test',
'<div class="image" recordId="{id}"><img recordId="{id}" src="resources/images/location.png"/></div>',
'<div class="info" recordId="{id}">{title}</br>city, state zip</div>',
'</div>',
In listeners
listeners: [{
element: 'element',
delegate: 'div.addressInfo',
event: 'tap',
fn: function(evt,element) {
var id = element.getAttribute("recordId");
var index = this.getStore().find("id",id);
var record = this.getStore().getAt(index);
console.log(record);
}
}]
Update 2
var ele = document.getElementsByClassName('addressInfo');
ele[0].style.backgroundColor = 'blue';