尝试访问$ container的’.box’类时,在ajax调用内部使用(this)不起作用。
$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'); } );
如果不清楚我要做什么,我会尝试更改动态元素的css。但是例如
$(this).css('width','70%');
根本没有调整css。如果我将其移到ajax,success部分之外,它可以工作,但是我无法获得“描述”。
你近了 在您使用它的上下文中,“ this”是指ajax请求,而不是发出事件的事物。要解决此问题,请在发出ajax请求之前存储此副本:
}else{ var me = this; $.ajax({ ... success: function(data){ description = data[0]; $(me).css('width', '70%');