2013-02-27 28 views

回答

1

.remove()函數採用一個選擇器來過濾已匹配的元素,而不是它們內部的匹配元素。你需要的是這樣的:

$(self).find('div:contains(someText)').remove(); 

這將查找包含任何內部的文本someText一個<div>元素元素self是,然後刪除它。

1

API http://api.jquery.com/remove/ sais需要選擇器。

嘗試 $(self).remove('> div'); 這將刪除div的第一個孩子。

您可以使用$(self).filter('div:contains("someText")').remove();刪除特定內容的div或$(self).find('> div').remove();刪除div的第一個孩子。

編輯:刪除第一個版本,我張貼沒有測試。

+0

從文檔在div:「A選擇表達式**濾波器匹配的元素集合**被去除的」。我很確定它不在元素內部搜索,它只是過濾已經存在於jQuery對象中的元素。這也不是必需的,因爲參數是可選的(由doc中的方括號表示)。 – 2013-02-27 09:12:11

0

這很可能與自我的範圍有關。既然你已經命名爲self,我假設你在click事件中使用$(this)得到了這個變量。如果是這種情況,並且您想要調用remove方法,則只能在同一個函數內執行此操作。否則,您需要將該元素存儲在變量中,或者提供另一個選擇器來訪問它。

Example: 

<div class="div1"></div> 

這將是與該點擊事件

$(document).ready(function(){ 
    var self = null; 
    $('.div1').click(function(e){ 
     self = $(this); 
     var itemToAdd = '<div>SomeText</div>'; 
     $(itemToAdd).appendTo(self); 
    }); 
    // to remove it 
    // this will remove the text immediately after it's placed 
    // this call needs to be wrapped in a function called on another event 
    $('.div1').find('div:contains(someText)').remove();  
});