2016-07-24 2 views
1

Я реализую функцию списка желаний для моего приложения rails. Пока я могу настроить диалог и заставить его исчезать через 5 секунд. Проблема в том, что когда-то исчез, и пользователь нажимает на другое диалоговое окно «добавить список желаний». Они должны обновить страницу. Я все еще учился, поэтому знаю, что происходит. Мне нужно закрыть диалог с помощью js, но как?Закройте диалог через 5 секунд с помощью jquery

Coming from my last question:

HTML

<section data-id="notification"></section> 

JavaScript

... 

// Calling the notification(); 
// You need to reduce that data string! 
notification("<div id='noti' class='alert alert-success'><a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a><p>WishList Added!</p></div>"); 

... 

function notification(data){ 
    $("[data-id=notification]").append(data).delay(5000).fadeOut(400); // I've tried adding .dialog('close') 
    $('#noti').dialog('close'); // this gives an error. 
    } 

... 

В заключение, когда пользователь добавляет в лист желаний, диалоговое покажет. Пользователь может вручную закрыть диалоговое окно или он закроется после x секунд. Если диалоговое окно закрывает его сам, и пользователь нажимает на другой список пожеланий, появляется предупреждение снова и т. Д. Некоторые из них должны удалить его из dom.

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

This question - 4 года назад. С чего изменилось? Мне нужны оба: пользователь close и js close.

+0

похоже, что у вас есть проблема с турбовинками, вы используете турбовинки 5? – mrvncaragay

+0

@ Marv-C No. Он не установлен. – Sylar

+0

@ ZakariaAcharki Да, я. Я думал о моделировании '.click()'. Возможное? – Sylar

ответ

1

Вы должны использовать alert('close'):

$("[data-id=notification]").append(data).delay(5000).fadeOut(400); 
$('#noti').alert('close'); 

Или с помощью setTimeout:

$("[data-id=notification]").append(data); 
setTimeout(function() { $('#noti').alert('close'); }, 5000); 

Надеется, что это помогает.

+0

Привет. Это работает, если я удаляю '.delay (5000) .fadeOut (400);', поскольку он оставляет класс 'display: none'. Как это обойти? Было бы аккуратно исчезнуть. Если нет, не проблема. – Sylar

+0

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

+0

Он тоже должен работать @Sylar, посмотрите http://jsfiddle.net/z_acharki/qYqjS/46/ –

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