1. 程式人生 > >jQuery 刪除、複製和替換元素

jQuery 刪除、複製和替換元素

一、使用jQuery刪除元素

(1)、remove()移除所有匹配的元素

  remove() 方法移除被選元素,包括所有文字和子節點。該方法不會把匹配的元素從 jQuery 物件中刪除,因而可以在將來再使用這些匹配的元素。

  但除了這個元素本身得以保留之外,remove() 不會保留元素的 jQuery 資料。其他的比如繫結的事件、附加的資料等都會被移除。這一點與 detach() 不同。

       語法:$(selector).remove()

<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js"></script>
<script>
$(document).ready(function(){
  $("button").click(function(){
    $("#div1").remove();
  });
});
</script>
</head>
<body>
<div id="div1" style="height:100px;width:300px;border:1px solid black;background-color:yellow;">
This is some text in the div.
<p>This is a paragraph in the div.</p>
<p>This is another paragraph in the div.</p>
</div>
<br>
<button>刪除 div 元素</button>
</body>
</html>


檢視返回的物件:返回刪除所有的元素

<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js"></script>
<script>
$(document).ready(function(){
  $("button").click(function(){
    var obj=$("#div1").remove();
    $("body").append(obj);
  });
});
</script>
</head>
<body>
<div id="div1" style="height:100px;width:300px;border:1px solid black;background-color:yellow;">
This is some text in the div.
<p>This is a paragraph in the div.</p>
<p>This is another paragraph in the div.</p>
</div>
<br>
<button>刪除 div 元素</button>
</body>
</html>


  remove() 方法也可接受一個引數,允許您對被刪元素進行過濾。該引數可以是任何 jQuery 選擇器的語法。

下面的例子刪除 class="italic" 的所有 <p> 元素:

<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js"></script>
<script>
$(document).ready(function(){
  $("button").click(function(){
    $("p").remove(".italic");
  });
});
</script>
</head>
<body>
<p>This is a paragraph in the div.</p>
<p class="italic"><i>This is another paragraph in the div.</i></p>
<p class="italic"><i>This is another paragraph in the div.</i></p>
<button>刪除 class="italic" 的所有 p 元素</button>
</body>
</html>


(2)、empty()刪除匹配的元素集合中所有的子節點

  empty() 方法從被選元素移除所有內容,包括所有文字和子節點。

         語法:$(selector).empty()

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(".btn1").click(function(){
  $("p").empty();
  });
});
</script>
</head>
<body>
<p style="width:200px;height:200px;background-color:yellow">This is a paragraph. <b>Bold</b> and <i>italic</i> text.</p>
<button class="btn1">刪除 p 元素的內容</button>
</body>
</html>

檢視返回的物件:返回的物件不包括刪除的子元素,只保留節點。

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(".btn1").click(function(){
  var obj=$("p").empty();
   $("body").append(obj)
  });
});
</script>
</head>
<body>
<p style="width:200px;height:200px;background-color:yellow">This is a paragraph. <b>Bold</b> and <i>italic</i> text.</p>
<button class="btn1">刪除 p 元素的內容</button>
</body>
</html>


(3)、detach() 從 DOM 中移除匹配元素集合

  detach() 方法移除被選元素,包括所有文字和子節點。這個方法會保留 jQuery 物件中的匹配的元素,因而可以在將來再使用這些匹配的元素。detach() 會保留所有繫結的事件、附加的資料,這一點與 remove() 不同。

          語法:$(selector).detach()

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("button").click(function(){
    $("body").append($("p").detach());
  });
 $("p").click(function(){
    $(this).animate({fontSize:"+=1px"})
  });
});
</script>
</head>
<body>
<p>在本段落移動之後,試著點選該段落,請注意它保留了 click 事件。</p>
<button>移動 p 元素</button>
</body>
</html>


二、使用jQuery複製元素

  clone() 方法生成被選元素的副本,包含子節點、文字和屬性。

        語法:$(selector).clone(includeEvents)

  includeEvents可選。布林值。規定是否複製元素的所有事件處理。預設地,副本中不包含事件處理器。

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("button").click(function(){
    $("body").append($("p:first").clone(true));
  });
  $("p").click(function(){
    $(this).animate({fontSize:"+=1px"});
  });
});
</script>
</head>
<body>
<p>點選本段落可以增加文字的大小。事件處理器同樣被複制到新的段落。</p>
<button>複製每個 p 元素,然後追加到 body 元素</button>
</body>
</html>


三、使用jQuery替換元素

(1)、replaceAll()用匹配的元素替換所有匹配到的元素

   replaceAll() 方法用指定的 HTML 內容或元素替換被選元素。提示:replaceAll() 與 replaceWith() 作用相同。差異在於語法:內容和選擇器的位置,以及 replaceWith() 能夠使用函式進行替換。

           語法:$(content).replaceAll(selector)

   content 必需。規定替換被選元素的內容。可能的值:

       HTML 程式碼 - 比如 ("<div></div>")

       新元素 - 比如 (document.createElement("div"))

       已存在的元素 - 比如 ($(".div1")) ,已存在的元素不會被移動,只會被複制,幷包裹被選元素。

   selector 必需。規定要替換的元素。

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $(".btn1").click(function(){
    $(document.createElement("div")).replaceAll("p");
  });
});
</script>
<style>
div{height:20px;background-color:yellow;margin:10px;}
</style>
</head>
<body>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<button class="btn1">用新的 div 替換所有段落</button>
</body>
</html>


(2)、replaceWith()用新內容替換匹配的元素

   replaceWith() 方法用指定的 HTML 內容或元素替換被選元素。提示:replaceWith() 與 replaceAll() 作用相同。差異在於語法:內容和選擇器的位置,以及 replaceAll() 無法使用函式進行替換。

         語法:$(selector).replaceWith(content)

   content 必需。規定替換被選元素的內容。可能的值:

       HTML 程式碼 - 比如 ("<div></div>")

       新元素 - 比如 (document.createElement("div"))

       已存在的元素 - 比如 ($(".div1")),已存在的元素不會被移動,只會被複制,幷包裹被選元素。

    selector必需。規定要替換的元素。

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $(".btn1").click(function(){
    $("p").replaceWith("<b>Hello world!</b>");
  });
});
</script>
</head>
<body>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<button class="btn1">用粗體文字替換所有段落</button>
</body>
</html>


  使用函式來替換元素,使用函式把被選元素替換為新內容。

      語法:$(selector).replaceWith(function())

  function()必需。返回待替換被選元素的新內容的函式。

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("button").click(function(){
    $("p").replaceWith(function(){
return "<p>Hello World!</p>";
    });
  });
});
</script>
</head>
<body>
<p>這是一個段落。</p>
<p>這是另一個段落。</p>
<button class="btn1">用新的 p 元素替換所有段落</button>
</body>
</html>