2015-09-25 54 views
0

你可以看看this demo,讓我知道爲什麼我不能刪除.check-wrap類,如果存在?什麼現在.unwrap()的情況是,即使除去.well解開復選框問題父

$("#un-mask").on("click", function() { 
 
    if ($("input:checkbox").parent().is('.check-wrap')) 
 
    $("input:checkbox").unwrap("<span class='check-wrap'></div>"); 
 
});
@import 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css';
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="container"> 
 
    <div class="well"> 
 
    <input type="checkbox" /> 
 
    <span class="check-wrap"> 
 
    <input type="checkbox" /> 
 
</span> 
 
    <span class="check-wrap"> 
 
    <input type="checkbox" /> 
 
</span> 
 

 
    </div> 
 
</div> 
 

 
<button class="btn btn-default" id="un-mask">Yes</button>

回答

1

jQuery的.unwrap()方法不接受任何參數。它刪除每個匹配元素的父項。由於您的div.well是第一個複選框輸入的父項,因此它也被刪除。解決這個問題

一種方法是包的第一個複選框輸入某種類型的標籤跟人家一樣:

$('input:checkbox').unwrap();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="container"> 
 
    <div class="well"> 
 
    <span class="check-wrap"> 
 
     <input type="checkbox" /> 
 
    </span> 
 
    <span class="check-wrap"> 
 
     <input type="checkbox" /> 
 
    </span> 
 
    <span class="check-wrap"> 
 
     <input type="checkbox" /> 
 
    </span> 
 
    </div> 
 
</div> 
 

 
<button class="btn btn-default" id="un-mask">Yes</button>

https://api.jquery.com/unwrap/

+0

謝謝回覆丹尼爾,有沒有其他解決方案來解決這個問題? – Suffii

+0

在另一主題上,您還應該在代碼段的第二行中存儲'$(「input:checkbox」)'的返回值,以避免在第三行重複同一個DOM查詢。 –

+0

我編輯了答案以包含可能的解決方案。 –