Я бы вообще не привязывал обработчик кликов к кнопкам.Вы говорите, у вас их много.Присоединение одного и того же обработчика событий к каждому из них является пустой тратой памяти и может даже вызвать проблемы с производительностью.
Использовать делегирование события вместо:
$('#tableID').delegate('input[type=radio]', 'click', function() {
// code here
});
Затем вы можете извлечь i
и j
с помощью регулярного выражения (вы также можете изменить шаблон так, чтобы вы могли использовать что-то более простое, например split()
):
var exp = new RegExp("\\[(.+?)\\]\\[(.+?)\\]", 'g');
var match = exp.exec(this.id);
var i = match[1];
var j = match[2];
Вы можете сложить это вместе так:
$('#tableID').delegate('input[type=radio]', 'click', function() {
var match = this.id.match(/\[(.+?)\]\[(.+?)\]/)
var i = match[1]; // use parseInt(match[1]) if you need an integer
var j = match[2];
handleOnClickRadio(i,j);
});
edit: Сделан код немного проще.
Если i
и j
соответствуют указателям на столбцы и строки, см. @ ответ Каспара Клейне об альтернативном способе их извлечения.
Для обеспечения доступности вам следует рассмотреть возможность привязки обработчика к change
событие.Тогда изменения через клавиатуру также будут распознаваться.