0

我正在尝试从我存储在 html() 方法的变量中的代码块中删除一些元素。例子。

<div id="block">
  <div id="temp"><span>dsgdgdgdgdg</span></div>
  <ul>
    <li>dsfdsfsdfds</li>
    <li>dsfdsfsdfds</li>
    <li>dsfdsfsdfds</li>
  </ul>

</div>

JS代码

    var html = $('#block').html();
    html.remove('#temp');
4

3 回答 3

2

你应该把它转过来:

$('#block #temp').remove();

这将删除每个元素id = "temp"的后代id = "block"

您正在尝试搜索 HTML,但 html 只是一个字符串。

于 2013-04-24T21:53:29.567 回答
1

一旦你有了一个字符串,你就不能再在它上面调用 jQuery 方法了。您必须从字符串重新创建 jQuery 对象,但您可以只创建 jQuery 对象的副本以开始,删除 div,然后获取 html 字符串,而不是这样做:

var $block = $('#block').clone();
$('#temp', $block).remove();
var html = $block.html();

JSFiddle

于 2013-04-24T21:58:04.323 回答
0

您的代码中有两个问题需要克服。

第一种是remove(selector)从与选择器匹配的集合中删除项目的方法,您不想这样做,您想删除子元素。

第二个是你的html变量是一个包含 html 的字符串,而不是一个 jQuery 对象。

这是一种克服两者的方法...

var html = $('#block');

// Some other code...

$('#temp', html).remove();

更新...上面的示例从原始块中删除了元素,要对字符串进行操作,您需要将其带回 jQuery 对象 - 这是一个示例...

var html = $('#block').html();

var test = $('<div />').html(html); // get string into a jQuery object
$('#temp', test).remove(); // remove the temp element
html = test.html(); // get the update html string

alert(html);
于 2013-04-24T21:59:29.453 回答