如何使用jQuery解决这个问题

时间:2010-02-23 18:25:25

标签: javascript jquery

我有一个html结构,有点像

 <div>

    <div id="mydiv">
        <h3>
        This is a Test Page
        </h3>
        <div>I am inside a div</div>
        <a href="http://www.google.com">Click me</a>  
        <div>Second div</div>     
    </div>
</div>

和一个脚本:

 $(function () {
        var elm = document.getElementById("mydiv").innerHTML;// can use html()of jquery
        alert(elm);
    });

现在elm在代码下打印/提醒:

  <h3>
        This is a Test Page
        </h3>
        <div>I am inside a div</div>
        <a href="http://www.google.com">Click me</a>  
        <div>Second div</div>  

现在我的问题是获取价值/访问“h3”/“a”

的方法是什么 来自var elm的

标签。 注意:我想使用elm。[我知道这很容易通过

完成
 $("#mydiv h3")]

所以只想使用var elm .... sln可以在jQuery / javascript中使用。

4 个答案:

答案 0 :(得分:3)

解决方案是:

 $(function () {
        var elm = document.getElementById("mydiv");
        alert($(elm).find('h3').text());
    });

我想你写了

var elm = document.getElementById(“mydiv”) .innerHTML ;

有关正在运行的示例,请参阅here

答案 1 :(得分:2)

尝试在 html字符串中搜索h3或锚点不起作用(就像建议的其他解决方案一样)。您需要更改代码,以便将“mydiv”元素作为jQuery对象,然后在其中搜索:

var elm = $('#mydiv');
alert(elm.html());
alert(elm.find('h3').text());

<强>更新

如果你真的想在字符串中加载html并解析它,你可以执行以下操作:

$(function () {
    // This is just a plain string of HTML now
    var html = document.getElementById("mydiv").innerHTML;

    // Add it to a hidden DOM element
    var hidden = $("<div/>").hide().appendTo("body");

    // Add the html, replacing the duplicate ID
    hidden.append(html.replace(/mydiv/, "mydiv2"));

    // Get the values
    alert(hidden.find("h3").text());
    alert(hidden.find("a").text());

    // Destroy holder
    hidden.remove();
});

答案 2 :(得分:1)

Vincent和Lance McNearney的答案显示了如何解决您的问题。要回答您的确切问题,不能让您无法访问elm中的“h3”/“a”  元素你想要的方式。 elm是一个基于您的html的字符串,并且与DOM无关。您可以解析它以找到h3标记的值(不太优雅),但您无法将该标记绑定到DOM中存在的真实标记。

答案 3 :(得分:0)

$(elm).find("h3")