Podczas próby uzyskania dostępu do klasy ".box" kontenera $, użycie (this) wewnątrz wywołania ajax nie działa.Ajax (ten) nie działa
$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');
}
);
Jeśli nie jest jasne, co próbuję zrobić, próbuję zmienić elementy dynamiczne. Ale na przykład
$(this).css('width','70%');
nie dostosowuje css w ogóle. Jeśli przeniesię go poza dział ajax, success, to działa, ale nie mogę uzyskać "opisu".
Jako zasada, nie staraj się używać $ (this), lub przynajmniej używać go raz. Ale jeśli potrzebujesz go wiele razy, przechowuj go w następujący sposób: var $ container = $ (this) i użyj $ container. To dodaje trochę wydajności, ale o wiele większą klarowność. Po prostu nie używaj $ this, to, ja wszędzie, to pokonuje cel. – Azder