1

我目前正在尝试查找 DOM-String 的第一个“元素”的类名。它根本不是 DOM,它只是特定 DOM 元素的字符串。

例子:

var test = '<div class="a_classname a_2nd_classname">[OTHER DOM ELEMENTS HERE]</div>';

我的问题是在加载完成之前我不知道 var 的内容(它是一个 ajax 响应)。所以它必须通过正则表达式绝对是动态的,我需要该变量中第一个元素的整个类名。

我用谷歌搜索,但没有解决我的问题。

欢迎任何建议:)

多谢

4

3 回答 3

0

如果您在代码中使用它,您可以使用 jquery 执行此操作

$('<div class="a_classname a_2nd_classname"><a class="foo">bar<a>[OTHER DOM ELEMENTS HERE]</div>').attr("class")

或者使用 DomParser

var xmlString = '<div class="a_classname a_2nd_classname"><a class="foo">bar<a>[OTHER DOM ELEMENTS HERE]</div>';
var parser = new DOMParser() ;
var doc = parser.parseFromString(xmlString, "text/xml");
doc.firstChild.className // => "a_classname a_2nd_classname"
于 2013-06-24T15:47:03.960 回答
0
  1. 确保,测试包含 html:

    if (/^<.+>$/.test(test))

  2. 然后,对其调用 $() :

    var tempHtml = $(test);

  3. 它将解析您可以通过 jQuery 或直接查询的标记:

    var firstElementClassNames = tempHtml[0].className.split(' ');

于 2013-06-24T15:49:28.743 回答
0

描述

div此正则表达式将捕获字符串中第一个标记的类名。该表达式确实需要选项s,并且m匹配所有行,点匹配新行字符。

\A.*?<div\b(?=\s)(?=(?:(?![^>])'[^']*'|"[^"]*"|.)*\sclass="([^"]*)")

在此处输入图像描述

如果您不知道具有类属性的第一个元素名称,则可以通过将标记名称替换为来修改表达式\w+。捕获组 0 将包含标签名称和左括号:

``\A. ?<\w+\b(?=\s)(?=(?:(?![^>])'[^'] '|"[^"] "|.) \sclass="([^" ]*)")`

Javascript 示例

输入示例文本

<div class="a_classname a_2nd_classname">[OTHER DOM ELEMENTS HERE]</div>

代码

<script type="text/javascript">
  var re = /\A.*?<div\b(?=\s)(?=(?:(?![^>])'[^']*'|"[^"]*"|.)*\sclass="([^"]*)")/;
  var sourcestring = "source string to match with pattern";
  var results = [];
  var i = 0;
  for (var matches = re.exec(sourcestring); matches != null; matches = re.exec(sourcestring)) {
    results[i] = matches;
    for (var j=0; j<matches.length; j++) {
      alert("results["+i+"]["+j+"] = " + results[i][j]);
    }
    i++;
  }
</script>

火柴

$matches Array:
(
    [0] => Array
        (
            [0] => <div
        )

    [1] => Array
        (
            [0] => a_classname a_2nd_classname
        )

)
于 2013-06-24T18:01:53.113 回答