Quando si tenta di accedere alla classe '.box' del contenitore $, l'uso di (this) all'interno della chiamata ajax non funziona.Ajax (questo) non funziona
$container.on(
"click",
".box",
function(event){
var description;
if($(this)[0].style.width == '70%'){
$(this).find(".resultData").fadeOut('slow');
$(this).css('width', '18%');
}else{
$.ajax({
url:'scripts/php/fetchResultsData.php',
data: {action:value},
type: 'post',
dataType: 'json',
success: function(data){
description = data[0];
$(this).css('width', '70%');
$(this).append("\
<div class='resultData'>\
<div class='resultName'>" + $(this).find("p").html() + "</div>\
<div class='resultDesc'>" + description +"</div>\
</div>");
/*alert($(this).find("p").html());*/
}
})
}
$container.masonry('reload');
}
);
Nel caso in cui non si capisce bene quello che sto cercando di fare, sto cercando di cambiare il css di elementi dinamici. Ma per esempio,
$(this).css('width','70%');
non si sta adeguando il CSS a tutti. Se lo metto fuori dalla sezione ajax, success, funziona, ma poi non riesco a ottenere la 'descrizione'.
Come regola generale, non tenta di utilizzare $ (questo), o per lo meno, usare una volta. Ma se ne hai bisogno più volte, memorizzalo come: var $ container = $ (this) e usa $ container. Questo aggiunge un po 'di efficienza, ma molto più chiarezza. Basta non usare $ questo, quello, io dappertutto, sconfigge lo scopo. – Azder