Я бы предложил использовать приличную разметку и не полагаться на onclick
атрибуты. Основная причина в том, что она сохраняет вашу разметку в чистоте, а также значительно уменьшает размер байта по проводу, если у вас много этих элементов.
Кроме того, я бы не стал кодировать значения в атрибуте id, поскольку теперь вы можете легально использовать атрибуты данных HTML5, а также они обратно совместимы.
<ul id="container">
<li class=".." data-action="login" data-id="1" data-params="a=b">..</li>
<li class=".." data-action="logout" data-id="2" data-params="c=d">..</li>
...
</ul>
Когда у вас есть данные в разметке, довольно просто настроить обработчики щелчков и связать их с классом Request
.
var list = document.getElementById("container");
var items = list.getElementsByTagName("li");
for(var i = 0; i < items.length; i++) {
items[i].onclick = (function(element) {
return function() {
var action = element.getAttribute('data-action');
var id = element.getAttribute('data-id');
var params = element.getAttribute('data-params');
sendRequest(action, params);
};
})(items[i]);
}
Если у вас есть lot из <li>
элементов, тогда делегирование событий может быть лучшим подходом вместо добавления одного обработчика для каждого элемента. Кроме того, рассмотрите возможность использования модели регистрации событий DOM для добавления обработчиков вместо свойства onclick
, поскольку это ограничивает параметры максимум одним обработчиком.