※DOM移除
官網連結目前有4個:
.empty():移除元素,自己的不會移除
.detach():移除元素,自己的會移除,事件不會移除
.remove():移除元素,自己的會移除,連事件都會移除
.unwrap():上一篇已講過
※.empty()
$(function(){ $('.div2').empty(); }); ---------- <div> div1 <div class="div2"> div2 <ul> <li>li1</li> <li>li2</li> <li>li3</li> </ul> </div> </div> <!-- 變成以下的樣子 --> <div> div1 <div class="div2"></div> </div>
※可以看出<div class="div2">裡面的才會移除
※.remove()、.detach()
$(function(){
$('.div2').remove(); // $('div').remove('.div2'); // $('.div2').detach(); // $('div').detach('.div2'); }); ---------- <div> div1 <div class="div2"> div2 <ul> <li>li1</li> <li>li2</li> <li>li3</li> </ul> </div> </div> <!-- 變成以下的樣子 --> <div> div1 </div>
※這個例子,這四種寫法都一樣
※.remove()和.detach()的差別
<style> .xxx{background-color:yellow}; </style> $(function(){ $("div").hover(function() { $(this).toggleClass('xxx'); }); var xxx; $('button').click(function(){ if (xxx) { $('body').prepend(xxx); xxx = null; } else { xxx = $('div').detach(); } }); }); ---------- <div> div1 </div> <button>click me</button>
※滑鼠進出div都會觸發xxx
※按下按鈕後,使用detach的事件可以循環;而remove一移除就破功了
※DOM 取代
官網連結目前有2個:
.replaceWith():右邊取代左邊
.replaceAll():左邊取代右邊
兩個方法功能一樣,但replaceWith()多一個function寫法
$(function(){ $('p').replaceWith($('.one')); // $('.one').replaceAll('p'); }); ---------- <div> div <p> p1 <span>s1</span> <span>s2</span> <span>s3</span> </p> <p> p2 <span>s4</span> <span>s5</span> <span>s6</span> </p> </div> <h1 class="one">xxx</h1> <!-- 變成以下的樣子,連h1都消失了 --> <div> div <h1 class="one">xxx</h1> <h1 class="one">xxx</h1> </div>
※replaceWith的function寫法
$(function(){ $('p').replaceWith(function(){ return '<b>bold</b>'; }); }); ---------- <div> div <p> p1 <span>s1</span> <span>s2</span> <span>s3</span> </p> <p> p2 <span>s4</span> <span>s5</span> <span>s6</span> </p> </div> <h1 class="one">xxx</h1> <!-- 變成以下的樣子,h1不會消失 --> <div> div <b>bold</b> <b>bold</b> </div> <h1 class="one">xxx</h1>
沒有留言:
張貼留言