【问题标题】:How to get text of element in a variable using jquery?如何使用 jquery 获取变量中元素的文本?
【发布时间】:2017-02-19 02:09:50
【问题描述】:
var markup = '<div class="ExternalClass34E9F553C2F74AA2B6D693A07BA166AC">Employee Self-Service pages have been corrected but may require you to refresh the page.</div><div class="ExternalClass34E9F553C2F74AA2B6D693A07BA166AC">&#160;</div><div class="ExternalClass34E9F553C2F74AA2B6D693A07BA166AC">If the problem remains, follow <a href="/Shared%20Documents/EBS%20Page%20Refresh%20Instructions_rkc.pdf">these instructions</a>. &#160;</div>';           
var str = "";
$(markup).find("div[class^='ExternalClass']").each(function(){
    str += $(this).text();
})

如何获取markup 中以ExternalClass 开头的所有div 的内容?

【问题讨论】:

  • 您要解析 HTML 还是 javascript 字符串?因为你说你想解析字符串,但是你的 jQuery 选择器看起来像是在解析 HTML 节点。
  • @user2415266 已更新。请解析变量
  • 但变量中的所有 div 都以 ExternalClass 开头。
  • 抱歉刚刚意识到该类不是“ExternalClass”,而是以外部类开头。但这只是让我想知道为什么你有这么多类,都以 ExternalClass 开头并且都使用非常复杂的名称?
  • @DibsyJr 我完全无法控制标记-控件发出这样的标记..

标签: javascript jquery html html-parsing selector


【解决方案1】:

$(markup) 选择器包含所有ExternalClass 类,您不能使用.find(),因为它没有任何匹配的孩子。您需要使用.filter() 过滤选定的元素。

var markup = "<div...";
var str = "";
$(markup).filter("div[class^='ExternalClass']").each(function(){
    str += $(this).text();
})

var markup = '<div class="ExternalClass34E9F553C2F74AA2B6D693A07BA166AC">Employee Self-Service pages have been corrected but may require you to refresh the page.</div><div class="ExternalClass34E9F553C2F74AA2B6D693A07BA166AC">&#160;</div><div class="ExternalClass34E9F553C2F74AA2B6D693A07BA166AC">If the problem remains, follow <a href="/Shared%20Documents/EBS%20Page%20Refresh%20Instructions_rkc.pdf">these instructions</a>. &#160;</div>';
$(markup).filter("div[class^='ExternalClass']").each(function(){
    console.log($(this).text());
})
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

【讨论】:

  • 这实际上是正确的答案。相比之下,我的就差了。
【解决方案2】:

jQuerys .find() 仅循环通过您选择的特定 HTML 的子项。您的变量 markup 没有适合类选择器的子级。 我能想象到解决这个问题的最简单方法是将markup 中的所有内容包装在另一个 div 中,然后使用您的 jQuery 选择器 - 这很有效:

var markup = '<div class="ExternalClass34E9F553C2F74AA2B6D693A07BA166AC">Employee Self-Service pages have been corrected but may require you to refresh the page.</div><div class="ExternalClass34E9F553C2F74AA2B6D693A07BA166AC">&#160;</div><div class="ExternalClass34E9F553C2F74AA2B6D693A07BA166AC">If the problem remains, follow <a href="/Shared%20Documents/EBS%20Page%20Refresh%20Instructions_rkc.pdf">these instructions</a>. &#160;</div>';
markup = '<div>' + markup + '</div>';
var str = "";
$(markup).find("div[class^='ExternalClass']").each(function(){
    str += $(this).text();
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    相关资源
    最近更新 更多