-4

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

<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 是因为我将 jQuery Mobile 与 MVC 一起使用。我知道还有其他方法可以做到这一点,但宁愿只编写一个 jQuery 函数来为我修复它。

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

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

3 回答 3

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 方法的信息。

于 2012-12-14T20:32:34.047 回答
2

编辑:

我需要删除父“地址”元素中的第二个和第三个“br”元素

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

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

$('br')

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

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

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

jsfiddle

如果您需要将逗号添加城市标签,只需选择适当的标签然后附加它,就像这样简单。

如果您需要在城市标签添加逗号,只需选择适当的标签,然后在后添加它,就像这样。你选择哪一个取决于你在做什么。

于 2012-12-14T20:46:14.757 回答
1
$('<br>').remove();  

(选择br的正确语法也是 is$('br')和 not $('<br>')

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

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

试试这个

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

检查小提琴

于 2012-12-14T20:33:14.997 回答