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を見つけることができず、「undefined」を返すだけです...

何か案は?ご協力いただきありがとうございます!

4

2 に答える 2

0

jQueryスクリプトを以下に置き換えます。

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

ライブデモ

于 2012-11-18T00:16:55.157 に答える
0

jQuery UIダイアログウィジェットは、フォームを含むdivを変更してDOM内の別の場所に移動します。これにより、「前の」ロジックでdivが検出されなくなります。

これが、あなたの例を試したときに私の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でダイアログウィジェットをインスタンス化してスクリプトを実行しないでください。それはそれを見つけるでしょう。

(「prev」を使用する代わりに)クラスごとに検索して選択したいDIVのクラスを叩いてみます。このようなもの...

<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 に答える