一尘不染

Ajax(此)不起作用

ajax

尝试访问$ 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部分之外,它可以工作,但是我无法获得“描述”。


阅读 174

收藏
2020-07-26

共1个答案

一尘不染

你近了 在您使用它的上下文中,“ this”是指ajax请求,而不是发出事件的事物。要解决此问题,请在发出ajax请求之前存储此副本:

                   }else{
                        var me = this;
                        $.ajax({
                            ...
                            success: function(data){
                                description = data[0];
                                $(me).css('width', '70%');
2020-07-26