6

这是我的代码...追加工作但删除不起作用。如何删除附加的div?

<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>
4

2 回答 2

6

window.close在您的 html 处理程序中指定:

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

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

否则close()指的是本机close方法,它不做任何事情。

以下是使用“javascript”(而不是内联 html 属性)处理程序来模拟它的方法:

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

这不是精确的复制(它在 IE 等中也不起作用,这不是重点),但它会将.closein放在范围内Window.prototype的全局前面window.close,因此它会遮蔽它。您仍然可以使用window.close().


您还应该完全放弃上述内容并改用 jQuery:

<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/


发出一个获取要附加的 html 文件的 ajax 请求:

$.get("myhtml.html", function(html) {
    $("body").append(html);
}, "html");
于 2012-08-10T11:58:22.373 回答
1

不知道为什么,但是通过给 close 函数加上另一个名字而不是 close() 它可以工作

<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>
于 2012-08-10T12:11:22.457 回答