Другая вещь иметь в виду состоит в том, предполагаете ли Вы когда-нибудь различные реализации своих функций работы (такие как декодирование и кодирование). В этом случае Вы определенно хотели бы абстрактный базовый класс с различными реальными классами, которые реализуют функции. Действительно не было бы уместно вложить отдельный подкласс для каждого типа реализации.
html()
is a synchronous operation. The actual updating of the DOM depends on what your html content is. If you have or
tags, they will take time to load. The next statement following the
html()
should immediately see the new html contents.
Did you mean load()
instead?
[Edit] Based on your comment, it is probably your $.ajax
failing. Not html()
. Try attaching a failure handler to ajax call and retry from there? Although, if your server side code silently fails with a 200 code, the failure event doesn't get called. In that case, you can validate the html value before you set it to the element.
Надеюсь, у кого-нибудь есть лучшее решение, чем у меня. Быстрый обходной путь - использовать setTimeout (), чтобы отложить ваши следующие вызовы, давая вашему блоку HTML достаточно времени для загрузки (поскольку время загрузки настолько ничтожно).
$('#some_div').html('<div>some content</div>');
// set timeout for 250 milliseconds
setTimeout(callbackFunction, 250);
function callbackFunction() {
// do some cool sh*t
}
Однако обратите внимание, что если вы хотите передать какие-либо переменные в свой функции, вы можете сделать следующее:
$('#some_div').html('<div>some content</div>');
// set timeout for 250 milliseconds
var myParam = 'value';
setTimeout(function() { callbackFunction(myParam); }, 250);
function callbackFunction(myParam) {
// do some cool sh*t
alert(myParam);
}