jQuery新手:如何删除某些子元素

时间:2012-12-14 20:04:05

标签: jquery

我需要删除父<br>元素中的第二个和第三个<address>元素,以使CityStateCode位于同一行。这是确切的代码:

<address>
    <label>3651 Stardust Drive</label>
    <br>
    <label>Hannibal</label>
    <br>
    <label>MO</label>
    <br>
    <label>63401</label>
</address>

我需要修改HTML,使其如下所示:

3651 Stardust Drive
Hannibal, MO
63401

我必须使用的html就是因为我正在使用带有MVC的jQuery Mobile。我知道还有其他方法可以做到这一点,但宁愿只编写一个jQuery函数来为我修复它。

我最初尝试删除所有换行符,但我需要保留第一个换行符并保留其他换行符....

$(document).ready(function() {
     //pretty-up the address & job descriptions
       $('<br>').remove();
 });

3 个答案:

答案 0 :(得分:3)

$('<br>').remove();

这实际上并没有删除任何br元素,因为$('<br>')创建了一个新的br元素(不将其插入任何地方),而.remove()尝试将其从文档中删除(什么都不做)。

要实际删除所有br元素,您需要

$('br').remove();

其中$('br')查找文档中的现有br元素,而.remove()将删除它们。

如果您只想从特定的父元素或元素中删除br元素,您可以添加到'br'选择器(例如将其更改为'address br'),也可以使用.find( ):

var $elems = $('address');
$elems.find('br').remove();

要从标签元素中提取文本,您可以执行类似

的操作
$elems.find('label').contents().unwrap();

您可以在http://api.jquery.org/找到有关我使用的所有jQuery方法的信息。

答案 1 :(得分:2)

  

编辑:

     
    
我需要删除父`address`元素中的第2和第3个`br`元素
  
     

您需要澄清这一点,因为您想要的示例将zipcode放在一个单独的行上。我从字面上理解了你,所以我的答案解决了你提出的最初问题。

首先,如果您要直接选择它们,则需要正确选择br元素:

$('br')

相反,您希望从br元素中删除除第一个元素之外的所有address元素。

因此,从地址元素开始,删除所有不等于第一个的br标签(列表中的元素0)。

$('address').find('br:not(:eq(0))').remove();

请参阅the jsfiddle

如果您需要将逗号添加到城市标签,那就像选择相应的标签然后添加like so一样简单。

如果您需要在城市标签后添加 之后的逗号,那么就像选择相应的标签然后在like so之后添加标签一样简单。你选择哪个取决于你正在做什么。

答案 2 :(得分:1)

$('<br>').remove();  

(选择 br 的正确语法是$('br')而不是$('<br>')

$('<br>') creates a New br element

$('br').remove()删除所有br标签..

试试这个

 $('address').find('br:eq(1)').remove();

<强> Check Fiddle