События триггера не работают на HTML, загруженном ajax - PullRequest
2 голосов
/ 21 мая 2010

Что ж, после того как вы отредактировали строку в этой таблице, которую я создал на 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>

любая помощь, которую я получу, очень ценится

1011 * привет *

1 Ответ

4 голосов
/ 21 мая 2010

Использовать делегирование событий ( live или делегат ):

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

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

Когда вы присоединяете обработчик, как указано выше, по сути вы:

Прикрепление обработчика к событию для все элементы, которые соответствуют текущему селектор, сейчас или в будущем.

Другими словами, элементы, замененные ajax, будут продолжать запускать события, изначально связанные с ними таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...