2

さて、フォーカスアウトで作成したこのテーブルの行を編集した後、更新されたデータで行全体をリロードすると仮定します。最初のロード後にトリガーイベントが機能しなくなるため、最初のロード後に行われた変更は保存されません.

私は現在このコードを使用しています

$(function () {
        $.ajaxSetup ({  
             cache: false  
        });  
    $("td input").focusout(function() {
        var defval = $(this).attr('title');
        var value = $(this).attr('value');
        var column = $(this).closest('td').attr('class')
        var user = $('input[type=hidden]').attr('value');
        var row = $(this).closest('tr').attr('id')
        if(defval == value){
        var state = 'Good Standing.';
        }else{
        var state = 'Will update spread sheet...';
        var loadUrl = "./ajax/update.php";  
        $('#'+row+'').load(loadUrl, {row: row, user: user, column: column, value: value});
        }  
    }); 
});

行は現在次のようになっています

<tr class="numbers" id="3">
<td class="a" align="right">3</td>
<td class="b"><input class="input" type="text" title="1750" value="1750"/></td>
<td class="c"><input class="input" type="text" title="2100" value="2100"/></td>
<td class="d"><input class="input" type="text" title="0" value="0"/></td>

<td class="e"><input class="input" type="text" title="0" value="0"/></td>
<td class="f">3.5</td>
<td class="g"><input class="input" type="text" title="0" value="0"/></td>
</tr>

私が得るどんな援助も大歓迎です

よろしく

4

1 に答える 1

4

イベント委任 ( liveまたはdelegate ) を使用します。

 // using .live
 $("td input").live("focusout", function() {
     ...

 // using .delegate
 $("table td").delegate("input", "focusout", function(){
     ...

上記のようにハンドラーをアタッチすると、基本的に次のようになります。

現在または将来、現在のセレクターに一致するすべての要素のイベントにハンドラーをアタッチします。

つまり、ajax で置き換えられた要素は、最初にそのようにバインドされたイベントを引き続き発生させます。

于 2010-05-20T22:15:08.913 に答える