好吧,在您在此表中进行编辑之后,我在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>

我得到的任何援助将不胜感激

问候

有帮助吗?

解决方案

使用事件委托(居住 或者 代表):

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

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

当您像上面的处理程序附加处理程序时,本质上是:

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

换句话说,Ajax取代的元素将继续以这种方式开除最初对它们的事件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top