$(document).ready(function() { var topicsListEl = document.querySelector('.topics'); $(topicsListEl).on('click', '[data-action]', function() { var $this = $(this), action = this.getAttribute('data-action'), tid = $this.parents('[data-tid]').attr('data-tid'); switch(action) { case 'pin': if (!$this.hasClass('active')) socket.emit('api:topic.pin', { tid: tid }); else socket.emit('api:topic.unpin', { tid: tid }); break; case 'lock': if (!$this.hasClass('active')) socket.emit('api:topic.lock', { tid: tid }); else socket.emit('api:topic.unlock', { tid: tid }); break; case 'delete': if (!$this.hasClass('active')) socket.emit('api:topic.delete', { tid: tid }); else socket.emit('api:topic.restore', { tid: tid }); break; } }); // Resolve proper button state for all topics var topicEls = topicsListEl.querySelectorAll('li'), numTopics = topicEls.length; for(var x=0;x