我正在尝试操作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());
显然只是使用警报进行调试。
答案 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
您正在为.remove()
提供一个选择器,该选择器仅适用于顶级元素。目标元素是嵌套的。
当您执行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();