使用php,如何保存段落标记的属性值?

使用php,如何保存段落标记的属性值?,php,jquery,attributes,Php,Jquery,Attributes,我有一个页面,可以使用jQuery UI draggable移动段落标记。每当我移动段落标记时,该标记的内联样式将更改为: position: relative; left: 280px; top: 300px; 我有一张表格就在下面。提交表单时,我希望php保存这两个属性值(顶部和左侧) 如何保存段落标记的多个属性值 我找到了答案,但我不知道$attrs数组来自何处,或者其中包含什么。也许这就是我错过的 一种方法是使用jQuery事件处理程序,以便在发送表单之前,读取段落的位置并将其存储在隐

我有一个页面,可以使用jQuery UI draggable移动段落标记。每当我移动段落标记时,该标记的内联样式将更改为:

position: relative; left: 280px; top: 300px;
我有一张表格就在下面。提交表单时,我希望php保存这两个属性值(顶部和左侧)

如何保存段落标记的多个属性值

我找到了答案,但我不知道$attrs数组来自何处,或者其中包含什么。也许这就是我错过的

一种方法是使用jQuery事件处理程序,以便在发送表单之前,读取段落的位置并将其存储在隐藏的表单字段中

另一种方法是在用户更改段落位置时更新一些隐藏的表单字段


(编辑:您提到的答案是关于在服务器端处理HTML DOM,而这个问题实际上是关于客户端的。这更像是一个Javascript问题而不是一个PHP问题)

我为一个应用程序使用了一个隐藏标记,它保存了几个DOM元素的位置。只要记住在PHP脚本中接收它们时检查它们的值

$('#element').css('top')和.css('left')将为您提供它们的值。 编辑: 或者,您可以使用position通过.position()或.offset()获取它们的值


您应该选择哪一个

您不能直接从PHP执行此操作。PHP不知道浏览器中发生的任何事情,除非浏览器将该信息发送给脚本

您需要手动发送
顶部
左侧
值。最好的方法是收听提交事件:

$('#myForm').submit(function(e) {
    e.preventDefault();
    var position = $('#yourP').position();

    $('<input/>', {type: 'hidden', name: 'left', value: position.left}).appendTo(this);
    $('<input/>', {type: 'hidden', name: 'top', value: position.top}).appendTo(this);

    this.submit(); // submit the form with the extra values
});
$('#myForm')。提交(函数(e){
e、 预防默认值();
变量位置=$('#yourP')。位置();
$(“”,{type:'hidden',name:'left',value:position.left});
$(“”,{type:'hidden',name:'top',value:position.top});
this.submit();//提交带有额外值的表单
});

然后,您可以在PHP脚本中使用
$\u POST['top']
$\u POST['left']
(如果您的表单使用
GET
,则可以使用GET等价物)访问这些值。

我建议使用Paul Dixon的答案,但为了清楚起见,$attr来自$a=$dom->getElementsByTagName(“a”);您可以在随附的问题中找到。我尝试了你的方法,但是现在表单没有提交。我还试着换掉$('',换成$('input',看看这是否是问题所在,但这似乎并不能解决问题。不知何故,'this.submit();'并没有让它按应有的方式提交表单。
$('#myForm').submit(function(e) {
    e.preventDefault();
    var position = $('#yourP').position();

    $('<input/>', {type: 'hidden', name: 'left', value: position.left}).appendTo(this);
    $('<input/>', {type: 'hidden', name: 'top', value: position.top}).appendTo(this);

    this.submit(); // submit the form with the extra values
});