<div id="element">
<ul>
<li data-id="1">
<a href="http://site.ru/" class="someclass">title</a>
<p>texttexttexttexttexttexttexttexttexttext</p>
<a href="http://site.ru/2/">tite2</a>
<p>texttexttexttexttext</p>
<a href="http://site.ru/3/">button</a>
</li>
<li data-id="2">
<a href="http://site.ru/" class="someclass">title</a>
<p>texttexttexttexttexttexttexttexttexttext</p>
<a href="http://site.ru/2/">tite2</a>
<p>texttexttexttexttext</p>
<a href="http://site.ru/3/">button</a>
</li>
<li data-id="3">
<a href="http://site.ru/" class="someclass">title</a>
<p>texttexttexttexttexttexttexttexttexttext</p>
<a href="http://site.ru/2/">tite2</a>
<p>texttexttexttexttext</p>
<a href="http://site.ru/3/">button</a>
</li>
</ul>
</div>
var $el = document.getElementById('element');
$el.querySelector('ul> li> a.someclass').onclick = function() {
console.log(this.closest('li').getAttribute('data-id'));
return false;
};
$el.querySelector('ul> li> div.someclass_2> a').onclick = function() {
console.log(this.closest('li').getAttribute('data-id'));
return false;
};
$el.querySelector('ul> li> a.someclass3').onclick = function() {
console.log(this.closest('li').getAttribute('data-id'));
return false;
};
$(document).on('click', '#element> ul> li a', function() {
console.log($(this).closest('li').data('id'));
});
const container = document.querySelector('#element');
const itemSelector = '.someclass';
const key = 'id';
const attr = `data-${key}`;
const attrSelector = `[${attr}]`;
container.querySelectorAll(itemSelector).forEach(function(n) {
n.addEventListener('click', this);
}, function(e) {
e.preventDefault();
let el = this;
while (!(el = el.parentNode).hasAttribute(attr)) ;
console.log(el.getAttribute(attr));
});
container.querySelectorAll(attrSelector).forEach(n => {
n.addEventListener('click', onClick);
});
function onClick(e) {
if (e.target.matches(itemSelector)) {
e.preventDefault();
console.log(e.currentTarget.attributes[attr].value);
}
}
container.addEventListener('click', e => {
const item = e.target.closest(itemSelector);
if (item) {
e.preventDefault();
console.log(item.closest(attrSelector).dataset[key]);
}
});