оценка кода на jquery
Hello
Оцените плиз если есть время мой $&^ - код... есть ли принципиальные замечания? Заранее благодарен $(document).ready(function(){ $.getJSON('ajax/tests.json', function(data){ var select = $('<select/>', { id: 'select'}); //Наполняем список $.each(data, function(key, val){ $('<option/>', { val: key, text: ''+val, file_addr: key+'.json' }).appendTo(select); }); $('#sidebar').append(select); if(!param) { var param = $('#select :first').attr('file_addr'); } $('#select').bind('click', function(){ LoadTest(); return false; }); }); function LoadTest() { var param = $('#select option:selected').attr('file_addr'); $('#content').html(''); $('#content').append('<input type="button" id="button" value="ok"/>'); $.getJSON('ajax/'+param, function(data){ $.each(data, function(key, val){ $('<h2>', { text: ''+val }).appendTo('#content'); $('#button').click(function(){ alert('go...go '+val); }); }); }); }; }); |
Зачем вешать обработчик клика на селект? Может нужно слушать событие change?
Зачем в цикле (верней в итерации each) вешать кучу обарбочтиков клика на button? По мелочам, нарушения соглашений по именованию: Вместо attr('file_addr') лучше использовать атрибут data-file-addr, и получать его через data('file-addr') И скорее всего должно быть file-url или file-src. Или там действительно адресная информация по файлам? Файл такой-то живет по улице такой-то, в доме таком-то? Если так, то все в порядке, ибо это и есть address. LoadTest - это если у тебя функция-конструктор. Если нет, то должно быть loadTest. |
Спс за комментарий.
Цитата:
|
после медитации над кодом и с учетом вышесказанного переделал... если кому интересно
$(document).ready(function(){ $.getJSON('ajax/tests.json', function(data){ //Наполняем список $.each(data, function(key, val){ $('<option/>', { val: key, text: ''+val, 'data-file-url': key+'.json' }).appendTo($('#select')); }); }); $('#select').bind('click', function(){ var param = $('#select option:selected').data('file-url'); $('#content').html(''); $('#content').append('<input type="button" id="button" value="ok"/>'); $.getJSON('ajax/'+param, function(data){ $.each(data, function(key, val){ $('<h2>', { text: ''+val }).appendTo('#content'); }); }); $('#button').click(function(){ alert('go...go '); }); }); }); |
Часовой пояс GMT +3, время: 03:49. |