jQuery - сделать что-то после загрузки элемента через ajax, но не в функции ajax - PullRequest
1 голос
/ 11 августа 2010

Я пытаюсь посмотреть, какой элемент загружается на страницу из вызова ajax.У меня нет доступа к JQuery, который делает вызов AJAX.Поэтому, когда на страницу загружается новый html, я бы хотел внести в него некоторые изменения.

В настоящее время я пытаюсь использовать функцию .load ():

$( '.autosuggest_keyword' ).load( 
    function()
    { 
        $( this ).val( 'load test' );
    }
);

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

Селектор правильный.

Есть идеи?

Ответы [ 5 ]

0 голосов
/ 23 августа 2010

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

0 голосов
/ 12 августа 2010

Когда вы вызываете .load, он привязывает этот обработчик событий к элементам, которые соответствуют вашему селектору во время его вызова. Поскольку элемент добавляется после этого, он никогда не связывается. Функция .live решает эту проблему путем привязки к текущим и будущим элементам, соответствующим селектору. Я думаю, что вы хотите что-то вроде этого (не проверено):

$( '.autosuggest_keyword' ).live('load', 
    function()
    { 
        $( this ).val( 'load test' );
    }
);
0 голосов
/ 11 августа 2010

Знаете ли вы, что называется начальным ajax?если это так, вы можете вызвать функцию, используя то же событие.Хотя это может вызвать некоторую путаницу, если вы пытаетесь изменить то, что загружает ajax.

0 голосов
/ 12 августа 2010

Утка может быть ответом:

should('duck-punch ajax success handler', function() {
    var origAjax = $.ajax;

    $.ajax = function(settings) {
        if(settings.url === 'the/request/page') {
            var origSuccess = settings.success;
            settings.success = function(responseHTML) {
                origSuccess.call(this, responseHTML);
                //apply some changes to html
            }

        }
        origAjax.call(this, settings);
    }
});
0 голосов
/ 11 августа 2010

Функция .load () ожидает URL-адрес, на который отправляется запрос AJAX, извлекаются данные с сервера и обновляется данный элемент в селекторе. Так что вам нужно передать URL:

$('.autosuggest_keyword').load('/foo');
...