0

我正在使用这样的 jQuery 模态对话框:

<div class="dialog-form" id="dialog-form1" title="Edit Invoice">
<form>
.... inputs & selects
</form>
</div>              
<button class="dialog-button">Edit</button>

按钮的功能如下所示:

$(".dialog-button").button().click(function() {
alert ($(this).prev("div").attr("id"));
});

我现在要做的就是获取前一个 div 的 ID(我将按钮更改为类而不是 ID,因为我在同一页面上放置了几个不同的弹出表单)。所以它应该返回“dialog-form1”。但无论我尝试什么,它都找不到前一个 div 的 ID,它只返回“未定义”......

有任何想法吗?谢谢你的帮助!

4

2 回答 2

0

将您的 jQuery 脚本替换为以下内容:

$(".dialog-button").click(function() {
   alert ($(this).prev("div").attr("id"));
});​

现场演示

于 2012-11-18T00:16:55.157 回答
0

jQuery UI Dialog 小部件会更改并将包含表单的 div 移动到 DOM 中的单独位置 - 导致您的“prev”逻辑找不到它。

这是我尝试您的示例时写入我的 DOM 的 HTML:

<div class="dialog-form ui-dialog-content ui-widget-content" id="dialog-form1" style="width: auto; min-height: 103.03333330154419px; height: auto;" scrolltop="0" scrollleft="0">
<form>
<!-- .... inputs & selects  -->
</form>
</div> 

为了证明这一点,不要在您的“dialog-form1”ID 上实例化 Dialog 小部件并运行您的脚本。到时候它会找到的。

我会尝试在您的 DIV 上添加一个您想要查找并按类选择的类(而不是使用“prev”)。像这样的东西...

<div class="dialog-form" id="dialog-form1" class="my-dialog-i-want" title="Edit Invoice">
<form>
<!-- .... inputs & selects  -->
</form>
</div>              

$(".dialog-button").on("click", function(e) {
  var myDiv = $("div.my-dialog-i-want");
  alert (myDiv.attr("id"));
});

希望这有帮助。

于 2012-11-18T01:08:07.173 回答