jQuery获取<div>标签之间的内容

44

这对某些人来说可能很容易:

var x = '<p>blah</p><div><a href="http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=brd&FlightID=2997227&Page=&PluID=0&Pos=9088" target="_blank"><img src="http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=bsr&FlightID=2997227&Page=&PluID=0&Pos=9088" border=0 width=300 height=250></a></div>';

如何提取仅位于 <div>I want this</div> 标签之间的部分,不要关注 <a> 标签,因为 div 中的内容可能不同。


你是想判断x是否为JavaScript字符串,还是尝试从页面中提取内容? - ybakos
你目前尝试了什么?JavaScript字符串文档提供了许多操作字符串的方法。(另外,也许你可以编辑你的代码使其成为有效的JS代码?) - nnnnnn
是的,好问题。我应该更加具体。x 是一个字符串。 - user460114
@user460114。请看下面我的编辑。 - Jason Gennaro
要读取 text 内容,可以使用 .text() 方法,但如果要读取 html 内容,则需要使用 .html() 方法。 - super cool
9个回答

74

这可能是你需要的:

$('div').html();

演示

这里表示获取 div 并返回其内部所有内容。更多信息请参见:http://api.jquery.com/html/

如果页面上有许多 div,并且您需要针对其中一个进行操作,则可以在 div 上设置一个 id,然后按如下方式调用:

$('#whatever').html();

此处的 whateverid

编辑

既然您已经澄清了您的问题,即需要处理字符串,那么以下是使用原生 JavaScript 的一种方法:

var l = x.length;
var y = x.indexOf('<div>');
var s = x.slice(y,l);
alert(s);

演示点击这里

  1. 获取字符串的长度。
  2. 找出第一个 div 出现的位置。
  3. 从那里切割内容。

什么是原生JS?我正在使用jQuery。你的代码出现错误x.slice不是一个函数。可能是因为我没有使用原生JS。 - user460114
1
@user460114 Vanilla JS 就是纯粹的 JavaScript,即不使用任何库等。 - jensgram
$('#whatever').text(); 是最佳选择。 - Prem Bikram Limbu
我该怎么做才能获取HTML中的数据属性? - melvin

16

jQuery有两个方法

// First. Get content as HTML
$("#my_div_id").html();

// Second. Get content as text
$("#my_div_id").text();

3
给这个div添加一个类或者id,然后像下面这样操作:
$("#example").get().innerHTML;

这在DOM层面是有效的。


3

使用下面的代码,其中x是保存问题标记的变量。

$(x).find("div").html();

如果 div 内部的内容可能会改变,那么可以合理地假设 div 内部可能会包含另一个 div,这将导致代码出错。使用 children() 替代 find() 可以解决此问题(假设 div 总是在顶级)。 - Matthew Scharley
@Matthew - .html()总是返回第一个匹配元素的HTML。因此,如果它有嵌套的div,则不会出现任何问题。此外,我的答案是根据用户在问题中提供的标记而给出的。 - ShankarSangoli
+1是因为这个答案指定了如何向函数提供string(或DOM内容 - 我想象中的)。 - Thomas

1
使用文本方法 [text()] 获取 div 元素中的文本,通过识别元素的类或 ID。

请更好地解释您的答案,关于id的部分不是很清楚。 - Mario Santini

1

使用jQuery来实现:

$("#divId").html()

1
我建议您给div加上if语句:
$("#my_div_id").html();

1
var x = '<p>blah</p><div><a href="http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=brd&FlightID=2997227&Page=&PluID=0&Pos=9088" target="_blank"><img src="http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=bsr&FlightID=2997227&Page=&PluID=0&Pos=9088" border=0 width=300 height=250></a></div>';
$(x).children('div').html();

1

这对我有效

var content = '<p> demp text </p>';
$('#wordContent').html(content);
$('#wordContent').html($('#wordContent').text());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接