使用remove作为append的反向不工作

时间:2013-02-27 09:05:44

标签: javascript jquery

以下是我追加价值的方式:

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

以下是我要删除它的方法:

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

附加工作,删除不。我做错了什么?

3 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:1)

.remove()函数使用选择器来过滤已匹配的元素,而不是匹配内部元素。你想要的是这样的:

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

这会在<div>元素中找到包含文本someText的{​​{1}}元素,然后将其删除。

答案 2 :(得分:0)

这很可能与自我的范围有关。既然你已经将它命名为self我假设你在点击事件中使用$(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();      
});