jQuery从元素获取ID

时间:2019-01-21 12:03:58

标签: jquery html

嘿,我在Jquery中遇到问题。这是我在php文件中的代码的一部分。

echo '<form action="add.php" method="post" id="'.$data["pro_id"].'">';
echo '<input style="display:none" type="text" name="img_link" value="'.$data["img_link"].'">';                   
echo '<input style="display:none" type="text" name="pro_url" value="'.$data["pro_url"].'">';
echo '<input style="display:none" type="text" name="pro_price" value="'.$data["pro_price"].'">';                    
echo '<input style="display:none" type="text" name="total_fb" value="'.$data["total_fb"].'">';                    
echo '<input style="display:none" type="text" name="pro_id" value="'.$data["pro_id"].'">';
echo '<input style="display:none" type="text" name="pro_name" value="'.$data["pro_name"].'">';
echo '</form>';

我需要提交表单,但请留在同一页面上,因此我使用了以下代码。它确实可以在不转到其他页面的情况下起作用,但是如何获取此表单的ID?当我输出id时,结果将是NoneType。

$('form').live('submit', function() {
  $.post($(this).attr('action'), $(this).serialize(), function(response) {
    var id = $(this).attr('id');
    document.write(id);
  }, 'json');
  return false;
});

1 个答案:

答案 0 :(得分:2)

您使用的是正确的方法,但是问题是this调用中的$.post()没有引用触发Submit事件的元素。因此,您需要将该行移至外部范围。

还有一些需要在这里解决的问题。首先请注意,live()在很久以前已被弃用。您应该检查所使用的jQuery版本,因为它至少应为1.12.1,或者更好的是3.3.1(在撰写本文时),而应使用on()

第二,您不应该使用document.write()。相反,您可以使用jQuery选择要更新的元素,然后在其上调用html()。试试这个:

$(document).on('submit', 'form', function(e) {
  e.preventDefault();
  var id = this.id;
  $.post(this.action, $(this).serialize(), function(response) {
    $('#targetElement').html(id);
  }, 'json');
});