1

这是我附加值的方式:

$('<div>someText</div>').appendTo(self);

这就是我要删除它的方式:

$(self).remove('<div>someText</div>');

附加有效,删除无效。我究竟做错了什么?

4

3 回答 3

1

API http://api.jquery.com/remove/说需要选择器。

试试$(self).remove('> div'); 这将删除 div 的第一个孩子。

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

编辑:删除了我未经测试发布的第一个版本。

于 2013-02-27T09:09:33.940 回答
1

.remove()函数采用一个选择器来过滤已经匹配的元素,而不是匹配其中的元素。你想要的是这样的:

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

这将找到一个包含任何元素内部<div>文本的元素,然后将其删除。someTextself

于 2013-02-27T09:10:54.147 回答
0

它很可能与自我的范围有关。由于您已将其命名为 self 我假设您在 click 事件上使用 $(this) 获取此变量。如果是这种情况,并且您想调用 remove 方法,则只能在同一个函数中执行此操作。否则,您需要将元素存储在变量中或提供另一个选择器来访问它。

Example:

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

这将是带有点击事件的 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();      
});    
于 2013-02-27T09:20:19.397 回答