字符串到jQuery对象,如何删除元素

时间:2011-12-02 01:20:38

标签: jquery

我正在尝试操作textarea中的一些html(不是页面的一部分),但我希望能够在其上执行jQuery函数。

这里我试图用1234的attr'my_id'删除div,但结果数据保持不变?

var data = "<div>something<div my_id='1224'>blah</div><div my_id='1234'>xx123</div></div>";

var id = '1234';

$(data).remove('[my_id="'+id+'"]');

alert($(data).html());

显然只是使用警报进行调试。

2 个答案:

答案 0 :(得分:2)

var data = "<div>something<div my_id='1224'>blah</div><div my_id='1234'>xx123</div></div>";

var id = '1234';

var $data = $(data);  // create elements from the string, and cache them

$data.find('[my_id="'+id+'"]').remove(); // find and remove the nested element

alert($data.html());  // alert the resulting HTML
  1. 您正在为.remove()提供一个选择器,该选择器仅适用于顶级元素。目标元素是嵌套的。

  2. 当您执行alert($(data).html());时,您使用的是原始字符串,该字符串未被修改。您需要创建元素,引用jQuery对象,进行操作,然后使用相同的jQuery对象来查看结果。

答案 1 :(得分:1)

修改

删除非dom元素的dom遍历

使用数据前缀将自定义属性放在元素上:

<div data-my_id='1224'

然后:

$(data).find('div[data-my_id="' + id + '"').remove();

或者更简单地就是在您要定位的div上使用常规ID:

 <div id='1224'

然后可以使用以下内容删除:

$(data).find('#' + id).remove();