我使用以下代码将表单数据发布到player / index.php并在对话框中打开它。因为我的表中有多个这些表单,所以我需要使用$(this)。
但现在它没有在对话框中打开。
新代码(不打开对话框,但在网址中显示数据):
$("#recordingdialog").dialog({
//other options, width, height, etc...
modal: true,
bgiframe: true,
autoOpen: false,
height: 200,
width: 350,
draggable: true,
resizeable: true,
title: "Play Recording",});
$(this).click(function() {
$.post('player/index.php', $(this).attr('form').serialize(), function (data) {
$("#recordingdialog").html(data).dialog("open");
});
return false;
});
旧代码(仅适用于一种形式):
$("#recordingdialog").dialog({
//other options, width, height, etc...
modal: true,
bgiframe: true,
autoOpen: false,
height: 550,
width: 550,
draggable: true,
resizeable: true,
title: "Play Recording",});
$("#wavajax button").click(function() {
$.post('player/index.php', $("#wavajax").serialize(), function (data) {
$("#recordingdialog").html(data).dialog("open");
});
return false;
});
答案 0 :(得分:1)
而不是.attr()
您想要的是.closest()
,如下所示:
$(this).click(function() {
$.post('player/index.php', $(this).closest('form').serialize(), function (data) {
$("#recordingdialog").html(data).dialog("open");
});
return false;
});
这会得到最近的父元素<form>
...所以你当前所在的<form>
:)而不是$(this)
作为{{1}的选择器我想你是指任何这些按钮,如果是这样的话给他们一个像click
这样的类并使用那个选择器,就像这样:
<button class="dialogBtn">
答案 1 :(得分:0)
您应该查看控制台输出中的错误。
$(this).attr('form')
将返回一个字符串,您不能在字符串上使用.serialize()
。
您还在什么情况下执行代码?在您拥有选择器之前,现在您只使用this
。