Javascript 如何使用jQuery解决这个问题
我有一个html结构,比如Javascript 如何使用jQuery解决这个问题,javascript,jquery,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>
<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>
现在,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>
因此,只想使用var-elm……sln可以同时使用jQuery/javascript。尝试在html字符串中搜索h3或锚定将不起作用(如建议的其他解决方案)。您需要更改代码,以便将“mydiv”元素作为jQuery对象,然后在其中搜索:
$(elm).find("h3")
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();
});
$(函数(){
//现在这只是一个简单的HTML字符串
var html=document.getElementById(“mydiv”).innerHTML;
//将其添加到隐藏的DOM元素中
var hidden=$(“”).hide().appendTo(“body”);
//添加html,替换重复的ID
hidden.append(html.replace(/mydiv/,“mydiv2”);
//获取值
警报(hidden.find(“h3”).text());
警报(hidden.find(“a”).text());
//销毁持有者
隐藏。删除();
});
解决方案是:
$(function () {
var elm = document.getElementById("mydiv");
alert($(elm).find('h3').text());
});
我想是你写的
var elm=document.getElementById(“mydiv”).innerHTML
查看运行示例。文森特和兰斯·麦克尼尔尼的回答说明了如何解决您的问题。要回答您的确切问题,您不能从
elm
以您想要的方式创建元素
elm
是一个基于您的html的字符串,与DOM没有任何联系。您可以对其进行解析以找到h3标记的值(不太优雅),但无法将该标记与DOM中存在的真实标记绑定。此处的全部代码是什么?elm的定义正确吗?您得到的错误是什么?html()在alertelm中给出了'null',这是一个根据您上面所写的字符串。您需要将elm更改为以下内容:var elm=document.getElementById(“myDiv”);警报(elm.innerHTML);警报($(elm.find(“h3”).text());更改代码会起作用,但有没有办法直接从elmNo检索值。必须以不同的方式访问它。var elm=$(“#mydiv”);毫无疑问会起作用,只是想知道我可以用elm(我有)操纵吗,似乎这是不可能的…任何建议都会检查,并让你确切知道…我需要解析它,这意味着大量的工作:-)。。兰斯是第一个指出确切原因的人,所以我接受他的回答。投票支持u:-)。。谢谢你的建议
$(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();
});
$(function () {
var elm = document.getElementById("mydiv");
alert($(elm).find('h3').text());
});