jQuery ненависть JS работа
Есть таблица. Задача простейшая, состоящая из двух частей — первая. При щелчке по чекбоксу в строке таблицы — скрывать-показывать элементы на карте, по щелчке на строку таблицы — поднимать/опускать флажок (для удобства). Ну, пишем наивный код:
onRowClick = function () {
$(this).find("input.checkbox-units").click();
};
onCheckboxClick = (function (collection) {
return function (event) {
var unitId = $(this).attr("name");
collection.objects[unitId].setVisibility($(this).attr("checked") ? true : false);
event.stopPropagation();
};
}(this.collection));
(замыкание тут нужно чтобы сохранить доступ к this.collection в хендлере). Так вот. При щелчке по чекбоксу все прекрасно — поднимается флажок, вызывается хендлер, объект показывается. А вот при щелчке по строчке
вначале вызывается обработчик событий click() (=onCheckboxClick) и только
потом поднимается/опускается сам флажок. В итоге при щелчке по строке таблицы события работают "в противофазе" :)