Reputation: 393
I need to change the position of an element i'm loading with ajax
. I want to use .css()
to change it but jQuery can't find the element cause it's not being recognized. How do i do to make jQuery "recognize" the element?
I've read about live()
and delegate()
but i can't get neither one of them to work as i want them to. I'd really appreciate some help!
Upvotes: 8
Views: 32083
Reputation: 69915
If you have to markup in a js variable then you can do it as below.
$(markup).find("requiredElement").css({ set the properties here });
Upvotes: 2
Reputation: 28795
Make the css change in the complete
or success
function of the ajax call. Assuming you're using load
:
$('#el').load(
url,
data,
function(){
$('#selector').css('position', 'absolute');
}
);
Alternatively (and easier to give as an example) register an ajaxComplete
event
$(document).ajaxComplete(function(){
if($('#elementID').length != 0) {
$('#elementID').css('position', 'absolute');
}
});
This is fired each time an ajax request completes, checks to see if #elementID exists and if so applies the css.
Upvotes: 20
Reputation: 77986
If you want to edit it's CSS, you need to place it in the DOM first, then manipulate it.
Example:
$.ajax({
...
success:function(data){
$('<div/>').appendTo('body').html(data).css('border','3px solid red');
}
});
Upvotes: 0