2013-03-11 2 views
0

у меня есть этот код ...JQuery .html ('') не работает, как я ожидал

$(".loadMsg").load('modalAnsmessages.php?id=<?php echo $row['id']; ?>&t=r',function(){ 
    $('#preloader').fadeOut(); 
    $(".modal_dialog .content").css({ 'background-color': '#eeeeee' }); 
    setTimeout("$.fancybox.resize();",500);  
}); 

, который работает отлично. Позднее я запускаю этот код ...

$(".p_close").click(function(){ 
    $(".loadMsg").html(''); 
    $(".loadMsgOpen").show(); 
    $(".modal_dialog .content").css({ 'background-color': '#ffffff' }); 
    setTimeout("$.fancybox.resize();",500); 
}); 

... этот код на первый взгляд, кажется, работает нормально; однако, я не думаю, что $(".loadMsg").html(''); работает так, как я ожидал. Каждый раз, когда я запускаю первый блок кода, каждое предыдущее содержимое .loadMSG показывается мгновенно, пока оно, наконец, не пройдет через все предыдущие экземпляры и не остановится. Иногда он останавливается на правильном, а иногда и нет.

Я бы хотел, чтобы при запуске $(".p_close").click я хотел бы, чтобы вся память $(".loadMsg") исчезла. Я думал, что $(".loadMsg").html(''); сделает это, но, видимо, я ошибаюсь.

+1

использование '$ (" loadMsg"). Пустой()' вместо этого. '.html ('')' является оболочкой для '.empty(). append()' –

+0

Пробовал '.empty()', но не имел успеха. Спасибо @BradM за идею. –

+0

Я не подразумевал использование '.empty()' в качестве решения, как более точный код. Я не знаю точно, что вы пытаетесь сделать с вашим кодом, но мое предложение состоит в том, чтобы держать все скрытым и показывать только когда оно готово. Кажется, у вас ошибка в некотором коде, который не показан. –

ответ

1

Попробуйте использовать функцию empty вместо:

Этот метод удаляет не только ребенка (и других потомков) элементов, , но и любой текст в наборе соответствующих элементов.

$(".p_close").click(function(){ 
    $(".loadMsg").empty(); 
    $(".loadMsgOpen").show(); 
    $(".modal_dialog .content").css({ 'background-color': '#ffffff' }); 
    setTimeout("$.fancybox.resize();",500); 
}); 
+0

Зачем это работает? .html ('') уже делает .empty() для элемента. –

+0

Пробовал '.empty()', но не имел успеха. Похоже, @BradM был прав. –

+0

@ G-J 'empty()', а также 'remove()' или 'html()' будет удалять дочерние элементы из DOM. Это означает, что они ушли - удачи, пытаясь вернуть их, если вы явно не пытались это сделать. Чтобы сделать больше, нам нужно будет увидеть рабочий пример. Можете ли вы установить код проблемы в jsFiddle? – BinaryTox1n

Смежные вопросы