Где и что надо получить:
const containerSelector = '.va-city-list';
const key = 'city';
const attr = `data-${key}`;
const attrSelector = `[${attr}]`;
const itemSelector = `${containerSelector} ${attrSelector}`;
Как достать из элемента значение атрибута:
const getVal = el => $(el).data(key);
// или
const getVal = el => $(el).attr(attr);
// или
const getVal = el => el.dataset[key];
// или
const getVal = el => el.getAttribute(attr);
// или
const getVal = el => el.attributes[attr].value;
Слушать клики можно непосредственно на элементах, содержащих атрибуты:
$(itemSelector).click(e => console.log(getVal(e.currentTarget)));
// или
document.querySelectorAll(itemSelector).forEach(function(n) {
n.addEventListener('click', this);
}, e => console.log(getVal(e.currentTarget)));
Или можно назначить обработчик клика один раз - общему предку элементов:
$(containerSelector).on('click', attrSelector, function() {
console.log(getVal(this));
});
// или
document.querySelector(containerSelector).addEventListener('click', e => {
const el = e.target.closest(itemSelector);
if (el) {
console.log(getVal(el));
}
});