0

append を使用して別の div を追加します

 $('#'+ number).append('<div id="descc'+number+'" class="backgroundImage" style="font-size:10px; height:13px; color:#fff; background-color:#000;" align="center">'+ descA+'</div>'); 

div が 2 回表示され、remove() が機能しません。アイデアはありますか?

function getDesc(number) {
    $.getJSON('getDescription.php?number=' + number, function(des) {
        descA = des;
        $('#' + number).append('<div id="descc' + number + '" class="backgroundImage" style="font-size:10px; height:13px; color:#fff; background-color:#000;" align="center">' + descA + '</div>');
    });
}

function cargarProyectos(cant, col) {
    for (i = 1; i <= cant; i++) {
        $('#proyectos').append('<div class="backgroundImage" id="' + i + '" style="position:relative; float:left; width:186px; height:150px; background-image: url(../CMS/_class/image.php?id=' + i + ' ); margin-top: 10px;margin-right:10px; margin-bottom:10px; cursor:hand;"></div>');
        $('#' + i).html('<div class="backgroundImage" style="font-size:10px; height:13px; color:#fff; background-color:#000;" align="center">PROYECTO ' + i + '</div>');
        getDesc(i);
        if (!(i % col) && i != 1) {
            $('#proyectos').append('<div class="scroll"  id="detalle' + Math.floor((i / col)) + '" style="position:relative; white-space: nowrap;display:none;  width:100%; height:0px; background-color:#e8e8e8; margin-bottom:10px;">            </div>');
        } else if (i == cant) {
            $('#proyectos').append('<div class="scroll" id="detalle' + Math.floor((i / col) + 1) + '" style="position:relative; display:none;white-space: nowrap; width:100%; height:0px; background-color:#e8e8e8; margin-bottom:10px;"></div>');
        }
    }
}

function windowSize() {
    winW = $('#proyectos').width();
    posicionDetalle = Math.floor(winW / 160);
    for (i = 1; i <= cantProyectos; i++) {
        $('#descc' + i).remove();
        $('#' + i).remove();
        if (i == cantProyectos) {
            cargarProyectos(cantProyectos, posicionDetalle);
        }
    }
    attachClickEvent();
}
4

1 に答える 1

1

あなたがいくつかのアイデアを求めていることを考えると、ここに私のものがあります。HTMLまた、どこでどの関数を呼び出すかわかりません。

しかし、名前windowSize()は、特にウィンドウの現在のサイズで作業しているウィンドウのサイズ変更で呼び出す可能性があることを示唆しています。

これにより、 で呼び出す必要があることをさらに確信できますresize()。したがって、2 回呼び出されることもあります (実際には、この数は保証されておらず、使用しているブラウザーによって異なります) --- これが原因かもしれません。

問題を整理するには、問題を追加する前に存在するかどうかを確認してください。

また、あなたのwindowSize()方法では、以下のテストは不必要に for ループの側にあります - for ループの外側に (if ステートメントを削除する途中で) 移動し、その直後に配置します。

    if (i == cantProyectos) {
        cargarProyectos(cantProyectos, posicionDetalle);
    }
于 2012-06-15T23:06:29.907 に答える