2

我们网站的后端开发有一个 div.errors 用于表单处理,它始终存在但为空,除非表单提交出错。它很容易最初​​隐藏 div,然后检查它是否有长度,如果它显示它。

if ($(".errors").text().trim().length) {
    $(this).css('display', 'block');
}

问题是这样的,在页面加载时 div.errors 是空的并且是隐藏的。当您提交表单时,div.erros 出现错误,然后有长度,但页面被刷新(再次加载)并且事件不会再次触发。.live 是一个可行的选择吗?

4

2 回答 2

2

问题是this停止引用元素:

$(".errors").each(function () {
    if ($(this).text().trim().length) {
        $(this).css('display', 'block');
    }
});
于 2012-11-08T04:55:16.047 回答
1

Live 在这里不是一个选项,当您将元素动态添加到页面时使用 live 。您需要某种状态管理技术来在页面刷新之间保留 div.errors 的值。我建议您使用 cookie,因为它们可以在 JQuery 中轻松访问。

于 2012-11-08T04:53:25.420 回答