2012-08-10 14 views
5

questo è il mio codice ... append funziona ma la rimozione non funziona. come rimuovere il div aggiunto?rimozione del div aggiunto con metodo append

<html> 
    <head> 
    <script type="text/javascript"> 
     function view(){ 
     $('body').append('<div class="added"><p>something</p></div>'); 
     }; 
     function close(){ 
     $('.added').remove(); 
     } ; 
    </script> 
    </head> 
    <body> 
    <a onclick="view();">something</a> 
    <a onclick="close();">close</a> 
    </body> 
</html> 
+0

ho scritto codice diff da mistake..this è il mio codice proprio ora..che non sta funzionando – user1531746

risposta

5

Specificare window.close nel gestore html:

<a onclick="window.close();">close<a> 

http://jsfiddle.net/ZTwd7/1/

Altrimenti close() si riferisce alla close metodo nativo, che non fa nulla.

Ecco come si dovrebbe emulare con un "javascript" (al contrario di Inline HTML attributo) gestore:

elem.onclick = function(event) { 
    with(Window.prototype) { 
     with(document) { 
      with(this) { 
       close(); 
      } 
     } 
    } 
}; 

Questo non è esatta riproduzione (non funziona in IE, ecc, non è questo il punto) ma inserire lo .close in Window.prototype davanti allo window.close globale nell'ambito, in modo che lo ombreggia. È ancora possibile fare riferimento ad esso in modo esplicito con window.close().


Si dovrebbe anche totalmente cadere il sopra e utilizzare jQuery invece:

<a id="view">something<a> 
<a id="close">close<a> 

JS:

$(function() { 
    $("#view").click(function() { 
     $('body').append('<div class="added"><p>something</p></div>'); 

    }); 
    $("#close").click(function() { 
     $('.added').remove(); 

    }); 
});​ 

http://jsfiddle.net/ZTwd7/5/


Fare una richiesta AJAX che recupera un html fi Le da aggiungere:

$.get("myhtml.html", function(html) { 
    $("body").append(html); 
}, "html"); 
+0

Beh, lo sta facendo nella sua funzione ... - Scusa, basta leggere il tuo commento, non sapeva che ha cambiato il suo codice. – SamiSalami

+0

che sta funzionando, ma puoi spiegare ... come se aggiungessi semplicemente "window" che funzioni? – user1531746

+0

@ user1531746 perché 'window.close' è ombreggiato da' Window.prototype.close'. Un altro motivo per evitare i gestori html, hanno un sacco di magia 'with'. – Esailija

1

Non so perché, ma mettendo un altro nome per chiudere funzione invece di close() funziona

<html> 
    <head> 
<script src="http://code.jquery.com/jquery-latest.js"></script> 

    <script type="text/javascript"> 
      function view(){ 
        $('body').append('<div class="added"><p>something</p></div>'); 
      }; 
      function close_it(){ 
             $('.added').remove(); 

      } ; 

    </script> 
</head> 
<body> 
    <a onclick="view();">something<a> 
    <a onclick="close_it();">close<a> 
</body></html>