触发事件不能在ajax加载的html上工作

时间:2010-05-20 22:13:34

标签: jquery ajax eventtrigger

那么在你在这个表格中连续编辑我已经创建焦点时,它假设用最新数据重新加载整个行,事情是触发事件在第一次加载后停止工作,所以在第一次加载后完成任何更改没有得救。

我目前使用此代码

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

任何帮助我都会非常感激

问候

1 个答案:

答案 0 :(得分:4)

使用事件委派(livedelegate):

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

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

如上所述附加处理程序时,基本上就是:

  

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

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