2

好吧,在您在此表中的一行中进行编辑后,我在 focusout 上创建了它假设用更新的数据重新加载整行,问题是触发器事件在第一次加载后停止工作,因此在第一次加载后所做的任何更改都不会被保存.

我目前使用此代码

$(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

使用事件委托(livedelegate):

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

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

当您按上述方式附加处理程序时,基本上您是:

将处理程序附加到与当前选择器匹配的所有元素的事件,现在或将来。

换句话说,ajax 替换的元素将继续以这种方式触发最初绑定到它们的事件。

于 2010-05-20T22:15:08.913 回答