如何在jQuery中附加到另一个div后隐藏div?

时间:2013-07-08 07:13:22

标签: javascript jquery

我需要在调用ajax之后隐藏div(this.elmWheel).loadUrl()。

使用此代码我无法隐藏div。 我在这做错了什么? 我正在使用jquery 1.4.2

var Viewer = function(url) {
        var scope = this;
        this.elm = '#viewer';
        this.elmWheel = '#loader-wheel';
        this.url = url;
        this.init = function() {
            this.loadWheelInit();
            this.loadUrl();
        };
        this.loadWheelInit = function() {
            $('<div id="' + scope.elmWheel + '">Loading ...</div>').appendTo(this.elm);
        };
        this.loadWheelHide = function() {
            $(this.elmWheel).hide();
            console.log('hide');
        };
        this.loadUrl = function() {
            // simulate loading
            setTimeout(function() {
                // fetch img from api
                $.get(this.url, function(data) {
                    scope.loadWheelHide();
                    console.log('show image');
                    // add img to the dom
                    var img = $('<img id="img">');
                    img.attr('src', this.url);
                    img.appendTo(scope.elm);


                });
            }, 2000);
        };
    };



        <div id="viewer" class="">

        </div>  

我正在使用此代码创建一个实例,图像正确附加了一个Loadind轮,只是无法隐藏它

    var viewer = new Viewer('img/1.jpg');
    viewer.init();

1 个答案:

答案 0 :(得分:1)

然后你正在创建一个加载轮,它得到一个错误的ID。

this.loadWheelInit = function() {
    $('<div id="' + scope.elmWheel + '">Loading ...</div>').appendTo(this.elm);
};

这导致

<div id="#loader-wheel">Loading...</div>

loadWheelHide方法中,您尝试按选择器#loader-wheel访问加载轮,但没有此类ID。

您需要在elmWheel中存储ID

this.elmWheel = 'loader-wheel'

在搜索时添加哈希符号

this.loadWheelHide = function() {
    $('#' + this.elmWheel).hide();
    console.log('hide');
};