0

FOREACH に由来する同じクラスの一連の div があります。それぞれに、フォームと、jquery を使用した ajax 呼び出しが含まれています。

フォームを送信するときに、その div のみにローダーを表示したいのですが、代わりに、以下の例を使用すると、ローダーがすべてに表示されるか、まったく表示されません。もちろん、私は何か間違ったことをしていますが、何がわからないのですか。私はこれです:

$('.form-approve').unbind('submit').submit(function () {

        var item = $(this).parent('div');

        item.next('.loading').show();

// etc. etc

フォームが送信された div にのみローダーを表示する方法は確かです。誰か助けてくれませんか?

このページには、次の html が含まれています。

 <?php foreach ($this->records as $r):?>
 <div class="requests">
 // show a name etc.
 <div class="log"> // this div is shown using a toggle
<form class="form-approve" etc.>
....
</form>
<div class="loader"></div>
</div>
<? endif; ?>

もちろん、上記はページ内で何度も繰り返されます。

4

1 に答える 1

0

これでうまくいくはずです:

$('.form-approve').unbind('submit').submit(function () {
        $(this).next('div.loader').show();
});

表示しdivたい はフォーム自体の隣にあるため、$(this).next('div.loader')適切にターゲットにする必要があります — 親から取得する必要はありません

編集。このように、フォームごとにそのコードが必要であることを確認するためだけに

$('.form-approve').each(function() {
     $(this).unbind('submit').submit(function () {
         $(this).next('div.loader').show();
     });
}) 
于 2012-05-24T16:37:54.107 に答える