【问题标题】:traversing element content with jquery and greasemonkey使用jquery和greasemonkey遍历元素内容
【发布时间】:2013-11-20 18:38:57
【问题描述】:

我有一个关于使用 jquery 和greasemonkey 遍历新创建的元素的问题。

我有这个 javascript sn-p:

var content="some html string"
var el = $( '<div></div>' );
el.html(content);
GM_log(el.html());

我添加到新 div 的 html 字符串类似于:

Hello:<br> world<br> <img src="someimage.jpg" align="absmiddle" border="0">
<font color="#FF0000"> hello<br>
<img src="otherimage.gif" align="absmiddle" border="0"> 
test</font><br>    
----------

我正在寻找一种方法来遍历新创建的 div 并分别访问每个标签/文本。
例如,如果我这样做:

GM_log(el.children());

我只能访问整个子项,而不是单个文本/标签。
谁能建议我怎么做?

【问题讨论】:

    标签: jquery jquery-traversing


    【解决方案1】:

    您可以使用find('*') 获取所有孩子,并使用each() 遍历它们。

    el.find('*').each(function(){
        alert(this.tagName);
        alert($(this).html());
        alert($(this).text());
    });
    

    【讨论】:

    • 好的,还有一个问题,您的解决方案只显示标签名称,我如何访问该标签的文本?或 html?
    • $(this).html() 或 $(this).text() 或 this.innerHTML
    • mm 它似乎不起作用: $(this).html() 显示除 img 标签外的空字符串。我可能已经找到了罪魁祸首。如果我执行 GM_log($(this)[0]) 我得到: [object XrayWrapper [object HTMLBRElement]] 并且 XrayWrapper 似乎没有 innerHTML 实现:(
    【解决方案2】:

    使用find() 获取所有后代元素,而不仅仅是目标元素的直接子元素

    GM_log(el.find('*'));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-18
      • 2011-01-14
      • 2018-06-05
      • 1970-01-01
      • 2020-07-30
      • 2011-10-04
      • 2020-04-19
      相关资源
      最近更新 更多