0

すべての行にフォームが含まれているテーブルがあります。下記参照

<table>
<tr><th>Fee Type</th><th>Amount</th><th>% Discount</th><th>Discounted Amount</th><th>Payable to</th><th>Remove</th></tr>    
<tr>
   <form>
         <td></td>
         <td class="cost"></td>
         <td> <input /> </td>
         <td class="discount"></td>
         <td></td>
   </form>
<tr>
</table>

今の私の意図は、各フォームをループしてajax投稿を実行するグ​​ローバル保存ボタンを用意することです。下記参照

    function saveEditedFees(){
        $("#savefeechanges").click(function(){
            $("#feestable form").each(function(){
                alert( $(this).attr('id') );
            });
        });
    }

私の問題は、クラス「cost」「discount」 の要素に$(this)を使用して「td」の値にアクセスすることです。

alert( $(this).find("td").eq(2).html() );
alert($(this).siblings('.cost').text());
alert($("td .cost" ,this).text());

基本的に、に含まれる値がに<td class="cost">等しいかどうかをテストしようとしています<td class="discount">。このようにして、ajax投稿を選択的に実行します。

助けてください。

4

3 に答える 3

7

マークアップが無効です。

<form>の子としてがあります<tr>

Chromeでは、HTMLは次のようにレンダリングされます。

<tr>
   <form></form>
         <td></td>
         <td class="cost"></td>
         <td> <input> </td>
         <td class="discount"></td>
         <td></td>
</tr>

ご覧のとおり、には<form>コンテンツがありません。

そして、それ.eq()はゼロベースのインデックスを取るので、次のようになるはずです。

$(this).find("td").eq(1)

....cost要素を取得します。

于 2011-12-01T20:52:28.323 に答える
0

あなたはあなたの行に次のようなスペースを設けるつもりでしたか?

alert($("td .cost" ,this).text());

そのはず

alert($("td.cost", this).text());

のコンテキストは、フォーム要素thisを参照することを意味するため、機能しないことに注意してください。またはを使用して、正しい方向に進んでいると思います。thissiblings()$("td.cost", this).html().text()

于 2011-12-01T20:53:25.777 に答える
0
$(this).closest('form').find('.cost');

これは、トラバーサルについて説明した別の質問に似ています。

ただし、TR要素にはTDまたはTHのみが含まれている必要があるため、続行する前にhtmlをリファクタリングする必要があります。レイアウトの目的でテーブルを別のテーブルの中にネストする必要があると感じた場合は、そうです。この場合はdivをお勧めしますが、テーブルの規則を破ると、roaが壊れる可能性があります。

于 2011-12-01T20:54:09.120 に答える