jQuery: изменение CSS для элемента, загруженного с помощью ajax? - PullRequest
7 голосов
/ 29 июля 2011

Мне нужно изменить положение элемента, который я загружаю, с помощью ajax.Я хочу использовать .css(), чтобы изменить его, но jQuery не может найти элемент, потому что он не распознается.Как мне сделать, чтобы jQuery «распознал» элемент?

Я читал о live() и delegate(), но я не могу заставить ни один из них работать так, как я хочу.Буду очень признателен за помощь!

Ответы [ 3 ]

18 голосов
/ 29 июля 2011

Внесите изменения css в функцию complete или success вызова ajax.Предполагая, что вы используете load:

$('#el').load(
    url,
    data,
    function(){
        $('#selector').css('position', 'absolute');
    }
);

В качестве альтернативы (и проще для примера) зарегистрируйте ajaxComplete событие

$(document).ajaxComplete(function(){
    if($('#elementID').length != 0) {
        $('#elementID').css('position', 'absolute');
    }
});

Это срабатывает каждый раз при ajaxзапрос завершается, проверяет, существует ли #elementID и, если это так, применяет css.

1 голос
/ 29 июля 2011

Если вам нужно разметить переменную js, вы можете сделать это, как показано ниже.

$(markup).find("requiredElement").css({ set the properties here });
0 голосов
/ 29 июля 2011

Если вы хотите редактировать его CSS, вам нужно сначала поместить его в DOM, а затем манипулировать им.

Пример:

$.ajax({
    ...
    success:function(data){
        $('<div/>').appendTo('body').html(data).css('border','3px solid red');
    }
});
...