Это не работает, потому что в точке, где вы определяете функцию remove
, значение $sent
уже определено как объект jQuery, который не соответствует ни одному элементу.Это связано с тем, что сопоставление происходит, как только вы пишете
var $sent = $('.wpcf7-mail-sent-ok ');
. В настоящее время элемент "отправка почты" пока отсутствует.
Самый простой способ исправить это повторнооценивать селектор в пределах remove
:
function remove() {
$('.wpcf7-mail-sent-ok').hide()
.removeClass('wpcf7-mail-sent-ok hide')
.removeAttr('style');
}
Другое решение состоит в том, чтобы просто использовать this
внутри обработчика щелчка и передать его в качестве параметра remove
:
function remove(el) {
$(el).hide()
.removeClass('wpcf7-mail-sent-ok hide')
.removeAttr('style');
}
$sent.live("click", function(){
$(this).addClass('hide');
setTimeout(function() { remove(this); },400)
});
Конечно, еще лучше просто использовать встроенный в jQuery delay
и вообще избавиться от remove
:
$sent.live("click", function(){
$(this).addClass('hide')
.delay(400)
.hide(0) // need to pass 0 as a parameter
.removeClass('wpcf7-mail-sent-ok hide')
.removeAttr('style');
});