2013-05-29 2 views
0

Это, чтобы показать чек на странице диагностики. У меня есть .append (not_ok), но когда swf-файл загружен на 100%, я хочу удалить приложение not_ok, а затем добавить .append (ok).Как удалить .append(), а затем добавить .append()

function callbackfunk(e){ 
    $(".FlashNotLoaded").css("color", "red").append(not_ok); 
    var timer = setInterval(function(){ 
    if(e.ref.PercentLoaded() === 100){ 
     $(".FlashLoaded").remove(); 
     $(".FlashLoaded").css("color", "green").append(ok); 
    } 
    }, 1000); 
} 

swfobject.embedSWF("/static/diag/countdown.swf", "flashDiv", "550", "400", "8.0.0", "expressInstall.swf", flashvars, params, attributes, callbackfunk); 

.append (not_ok) будет удален, но .append (ok) не заменит его. Я пробовал .replaceWith (ok), но это тоже не работает.

ответ

2

Как правило, с помощью jQuery вы делаете это, оставляя оба на странице в одном и том же месте. jQuery(notOkSelector).hide(); и jQuery(okSelecter).show();.

Скрыть делает объект display:none, и показать это вспять.

EDIT: До тех пор, как объекты уже в DOM (по умолчанию с display:none;) ...

Чтобы показать notLoaded:

$(".FlashLoaded").hide(); // it doesn't hurt to hide an already hidden object. 
var notLoaded = $(".FlashNotLoaded"); 
notLoaded.css('color', 'red'); 
notLoaded.show(); 

Чтобы скрыть notLoaded и показать ok:

$(".FlashNotLoaded").hide(); 
var flashLoaded = $(".FlashLoaded"); 
flashLoaded.show(); 
flashLoaded.css('color', 'green'); 

EDIT включая ваш Бова код: Ваша куда может выглядеть следующим образом ...

function callbackfunk(e){ 
    $(".FlashLoaded").hide(); 
    $(".FlashNotLoaded").css("color", "red").show(); 
    var timer = setInterval(function(){ 
    if(e.ref.PercentLoaded() === 100){ 
     $(".FlashNotLoaded").hide(); 
     $(".FlashLoaded").css("color", "green").show(); 
     clearInterval(timer); 
    } 
    }, 1000); 
} 
+0

+1 потому что это, по сути, более эффективная практика скрывать и показывать, чем удалять и добавлять. –

+0

Внесение изменений в структуру дерева DOM является ** дорогостоящим ** действием. Я согласен с тем, что '.show()' /'.hide() 'является правильным подходом для достижения желаемого поведения. – sweetamylase

+0

Я пробовал это: $ (". FlashNotLoaded"). Css («цвет», «красный»). Append (not_ok); $ («FlashLoaded»). Css («цвет», «зеленый»). Append (ok) .hide(); а затем в if (percentloaded()) {$ (". FlashNotOk"). hide(); $ (". FlashOk"). Show();} но я теряю их обоих в этой точке. Я не уверен в правильности синтаксиса для этого. – user1985037

0

этой линию

$(".FlashLoaded").remove(); 

удаляет элемент (ы) с DOM, так что следующая строка не может ничего добавить к DOM-

$(".FlashLoaded").css("color", "green").append(ok); 

Я полагаю, вы хотите удалить ok вместо этого.

0

Вы добавляете новые HTML-теги? Если это так, вы можете использовать jQuery replaceWiht(), он заменит существующий элемент новым элементом.

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