2012-03-21 2 views
2

Я использую jQuery, чтобы погасить «уведомление», которое я создал. Первый раз, когда функция называется, она исчезает просто отлично, но во второй раз «уведомление» добавляется к телу, но просто сидит там и не исчезает. Любая помощь будет принята с благодарностью.jQuery fadeOut() работает только один раз

Адрес Javascript, который вызывается.

if (pointsCalculated = 1) { 
    $('body').append('<div id="progress">' + pointsCalculated + ' point added to current points...</div>'); 
} 
else { 
    $('body').append('<div id="progress">' + pointsCalculated + ' points added to current points...</div>'); 
} 

//Reset calculator after adding to tracker 
calcReset(); 

    $("#progress").fadeOut(2000); 
+0

Вы добавляете второй div с тем же идентификатором, проверяете, существует ли div и используете fadIn() или иным образом изменяют видимость и редактируют его содержимое. – CBusBus

+0

Почему вы выполняете две идентичные операции внутри оператора 'if'' else'? –

+1

@ RokoC.Buljan один говорит пункт, а другой - – voigtan

ответ

4

Попробуйте удалить элемент после FADEOUT:

$("#progress").fadeOut(2000, function() { $(this).remove(); }); 

Подробнее:

.remove()
.fadeOut()

+0

Это сработало отлично - спасибо. Не могу поверить, что я пропустил удаление div, d'oh. – mattdonders

0

Необходимо каждый раз, когда оно будет добавлено, к событию #progress к событию fadeOut.

0

Вы должны воссоздать прикрепленные элементы привязки fadeOut, когда вы добавите элемент обратно в DOM. Вы можете создать это связывание сразу после добавления, и теперь это должно работать.

0

Вы код не покажет вам УДАЛЕНИЕ "прогресс", так что вы вероятно, каждый раз добавляя новый. Поскольку идентификаторы много уникальны, ваш код находит два и не удается.

2

Javascript не может найти более одного элемента с идентификатором, и его уже исчезли, если вы хотите запустить его снова.

вы можете изменить идентификатор класса, а затем найти все .progress, что видно и не анимированные, чтобы начать fadout по данному вопросу, и когда его сделали вы можете удалить его, так что вам не придется много .progress

$('body').append('<div class="progress">' + pointsCalculated + ' ' + (pointsCalculated === 1 ? 'point' : 'points') + ' added to current points...</div>'); 

//Reset calculator after adding to tracker 
calcReset(); 

$(".progress:visible:not(:animated)").fadeOut(2000, function() { $(this).remove(); }); 

запомнить в javascript, если вы хотите посмотреть, является ли переменная значением, которое вам нужно использовать, по крайней мере, для двух «=» иначе вы установите значение этой переменной.