Javascript 如何通过jQuery为某个元素设置cookie

Javascript 如何通过jQuery为某个元素设置cookie,javascript,php,jquery,cookies,Javascript,Php,Jquery,Cookies,我有一个包含多个div的页面,在每个div中我都有一个类为.sendCommentForm.的表单 由于PHP循环,页面中打印了多个div,所以我在同一页面中有多个表单 我不想直接显示表单,用户将单击按钮,然后表单将通过jQuery滑动切换 当页面刷新时,我需要保持表单滑动切换(如果表单在页面刷新前向下滑动,则表单应向下滑动) 我通过jQuery搜索并找到了cookies。它工作得很好,但问题是所有具有相同类名的表单都在向下滑动,我只希望有一个表单(或特定表单)在页面刷新之前处于向下滑动状态 这

我有一个包含多个div的页面,在每个div中我都有一个类为.sendCommentForm.的表单

由于PHP循环,页面中打印了多个div,所以我在同一页面中有多个表单

我不想直接显示表单,用户将单击按钮,然后表单将通过jQuery滑动切换

当页面刷新时,我需要保持表单滑动切换(如果表单在页面刷新前向下滑动,则表单应向下滑动)

我通过jQuery搜索并找到了cookies。它工作得很好,但问题是所有具有相同类名的表单都在向下滑动,我只希望有一个表单(或特定表单)在页面刷新之前处于向下滑动状态

这个话题帮助我达到了我的目标:

我拥有的代码(HTML):

我是否可以将元素:$('.sendCommentForm')更改为$(this),以便它可以标识处于slideDown状态的相同表单。。。 我试过了,但它不起作用

这个问题让我头痛,我很困惑


感谢您的帮助。

您需要一个解压标识符,如ID或数据属性,并可能在ID的cookie中存储一个逗号分隔的列表


最好使用浏览器会话,因为cookie会被发送到设置cookie的域上的每个请求的服务器。根据您的受众,检查浏览器对浏览器会话或本地存储的支持,看看这是否是您可以利用的。您需要为每个表单指定一个不同的ID。在cookie中,保存一个对象,其键为ID,值为打开/关闭状态

$('.sendComment').click(function() {
    var theForm = $(this).parent().next('.sendCommentForm');
    theForm.slideToggle('fast', function() {
    var state = {};
    $('.sendCommentForm').each(function() {
      state[this.id] = $(this).is(':visible');
    });
    $.cookie('comForm', state);
  });
});
然后,当页面加载时,获取cookie并根据对象的值显示每个表单

var comformState = $.cookie('comForm');
if (comformState) {
    $.each(comformState, function(id, visible) {
        $('#' + id).parent().next('.sendCommentForm')[visible ? 'slideDown' : 'slideUp']('fast');
    });
}

你想在哪里做出改变<代码>$(this)仅在将上下文绑定到特定元素的函数中有意义。就像事件处理程序中的
$(this)
是事件目标。我如何为每个表单指定唯一的ID,并且我在代码中只有一个表单,但它被PHP通过循环复制?请问我该怎么办?我有点困惑。在循环中增加一个变量,并将该变量包含在ID中。我将如何为每个表单提供唯一的ID,并且代码中只有一个表单,但它被PHP通过循环复制?请问我该怎么办?我有点困惑。例如,如果您从数据库中提取这些注释,我会假设注释具有某种标识符或主键。除了拉出注释(必须在循环中迭代)外,循环中还有注释的ID,你有PHP循环的例子吗?你有迭代注释的PHP代码吗?没关系,我已经忘记了这个问题,因为它非常难解决,我讨厌编程。。非常感谢你回答我的问题。。
$('.sendComment').click(function() {
    var theForm = $(this).parent().next('.sendCommentForm');
    theForm.slideToggle('fast', function() {
    var state = {};
    $('.sendCommentForm').each(function() {
      state[this.id] = $(this).is(':visible');
    });
    $.cookie('comForm', state);
  });
});
var comformState = $.cookie('comForm');
if (comformState) {
    $.each(comformState, function(id, visible) {
        $('#' + id).parent().next('.sendCommentForm')[visible ? 'slideDown' : 'slideUp']('fast');
    });
}