Domanda

Quando uso la funzione appendBox di seguito, la prima volta funziona benissimo e lo stesso con removeBox, ma la seconda volta non funziona correttamente:. Duplica il contenuto

Cosa c'è di sbagliato?

function appendBox( id )
{
    $("#listContainer").append("<div id=\"appendbox-"+ id +"\"><a href=\"javascript:removeBox("+ id +");\">remove</a></div>");
    $("#addBox-"+ id ).slideUp();
}
function removeBox( id )
{
    $("#listMyBoxs").append("<div id=\"addBox-"+ id +"\"><a href=\"javascript:appendBox("+ id +");\">tilføj</a></div>");
    $("#appendbox-"+ id ).slideUp();
}

Questo è il mio html quando provo questo test

<div style="height: 200px; border: 1px solid black;">

    <div id="listContainer"></div>

    <div id="listMyBoxs">

        <div id="addBox-1">
            <a href="javascript:appendBox( 1 );">tilføj</a>
        </div>

    </div>

</div>
È stato utile?

Soluzione

Vorrei cambiare il modo in cui si sta facendo. Una soluzione più tipico vorrebbe questo:

<div id="outer">
  <div id="listContainer"></div>
  <div id="listMyBoxes">
    <a href="#">tilføj</a>
  </div>
</div>

con:

#outer { height: 200px; border: 1px solid black; }
#outer a { display: block; }

e

$(function() {
  $("#listContainer a").live("click", function() {
    $(this).slideUp(function() {
      $(this).appendTo("#listMyBoxes").text("remove").slideDown();
    });
    return false;
  });
  $("#listMyBoxes a").live("click", function() {
    $(this).slideUp(function() {
      $(this).appendTo("#listContainer").text("tilføj").slideDown();
    });
    return false;
  });
});

Regola come richiesto. Se avete bisogno di contenuti più complesso di un semplice link allora si può racchiudere che in un div e regolare, se necessario. I principi sono tutti uguali.

Altri suggerimenti

Se si desidera spostare un elemento esistente , provare:

$("#appendbox-"+ id ).appendTo('#listMyBoxs');

Utilizzando $("<div></div>") o .append("<div></div>") crea un nuovo elemento.

Lo stesso problema qui, ho usato per aggiungere contenuti alla pagina utilizzando JavaScript e jQuery, funziona benissimo a Chrome, ma quando si cerca con Firefox duplica il contenuto aggiunto.

Ecco un esempio: content appeneded duplicato

Io uso questo codice per aggiungere contenuti a un div:

function PlayGames() {
    $(".gameActions, #flash-game").show();
    $(".TheGame").show().append("<object id='flash-game' type='application/x-shockwave-flash' height='100%' width='100%' frameborder='0' scrolling='no' data='URL'>");
        }

Non so perché questo accade solo in Firefox e IE a volte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top