Я бы сказал, что для студенческого проекта это безопасно. Тем не менее, это так долго, как вы знаете, что это за ошибка, и ваша программа обрабатывает ее соответственно. Вы не хотите бросать исключения, если не понимаете их:)
Однако, помещать это в конструктор совершенно нормально!
Вместо того, чтобы каждый раз связывать
, лучше просто поменять его содержимое (список элементов
) вместо этого.
Так что используйте это, как вы уже:
$("#ItemsPerPage").change(function(e) { return updatePaging(); });
, но когда вы обновляете его, просто меняете его содержимое (где newSelectElement
- это новый элемент
) :
function updateItemsPerPage( newSelectElement ) {
$("#ItemsPerPage").empty().append( newSelectElement.childNodes );
}
Таким образом, связывание не нужно будет обновлять, потому что сам узел не поменялся местами.
Событие изменения не поддерживается live (). Как насчет запуска функции в конце каждого вызова AJAX, который переназначает определение события?
Чтобы уточнить предложение Самиза, вам нужно сделать что-то вроде этого:
$(function() {
bind_items_per_page();
});
function bind_items_per_page() {
$("#ItemsPerPage").unbind('change').bind('change',function() {
updatePaging();
});
}
function updatePaging() {
$.post('/some/script',{foo:'bar',bar:'foo'},function(data) {
/* what ever you need to do */
// And assuming what ever you did above changed your select box...
bind_items_per_page();
});
}