оценка кода на 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, время: 15:23. |