这两天一直有个问题困扰:
我想把远程访问的一个html页面转化为jquery包装集,从而使用jquery包装集里的选择器进行查找操作,但是似乎不成功,请各位帮忙看看如何可进行此类操作,我的代码是:
<html>
<head>
<script type="text/javascript" charset="gb2312" src='jquery-1.3.2.min.js'></script>
<meta http-equiv="content-type" content="text/html; charset=gb2312"/>
<script type="text/javascript">
$(document).ready(function()
{
var s = "<html><body><p>one </p> <div> <p>two </p> <p>three</p></div> <p>three </p></body></html>" ;
var tt=$("p",$(s));
//var tt=$(" <div>"+s+" </div>").find("p");
alert(tt.html());
});
</script>
<title></title>
</head>
<body>
</body>
</html>
这样的返回结果应该各个<p>标签的内容,结果却是“two”。
我想把远程访问的一个html页面转化为jquery包装集,从而使用jquery包装集里的选择器进行查找操作,但是似乎不成功,请各位帮忙看看如何可进行此类操作,我的代码是:
<html>
<head>
<script type="text/javascript" charset="gb2312" src='jquery-1.3.2.min.js'></script>
<meta http-equiv="content-type" content="text/html; charset=gb2312"/>
<script type="text/javascript">
$(document).ready(function()
{
var s = "<html><body><p>one </p> <div> <p>two </p> <p>three</p></div> <p>three </p></body></html>" ;
var tt=$("p",$(s));
//var tt=$(" <div>"+s+" </div>").find("p");
alert(tt.html());
});
</script>
<title></title>
</head>
<body>
</body>
</html>
这样的返回结果应该各个<p>标签的内容,结果却是“two”。
<html>
<head>
<script type="text/javascript" src="scripts/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var s= $("<div><p>1</p><p>2</p><p>3</p></div>");
var result = $("p", $(s));
//(1)
$("#test").append($(result));
alert($("#test").html());
});
</script>
</head>
<body>
<div id="test"></div>
</body>
</html>楼主, 是对的, $(html,[ownerDocument])返回的是一个大的DOM结构, 你把它绑到一个div里, 然后alert一下div的HTML就知道了.直接alert(html)的话, 当然是有问题的, 因为我例中的p1p2p3本身是同级, 根据解析机制, 解析到1就停止了. 如果在(1)位置直接alert($(result).html())会返回1.
$(expression,[context])实际上就是通过筛选来创建DOM对象2. 要验证你result必须在高一级的层次, 比如例中的<div id="test">中才能完整得到html(), 相当于<div><p></p><p></p><p></p></div>这样以后得到div的innerHTML.
如果单独$(result).html()相当于<p>1</p><p>2</p><p>3</p>这样的结构, 它的innerHTML访问, 找到了<p>下的1, 然后发现标签结束了</p>就返回了.
$().html()与innerHTML是几乎一样的, 找到的是子DOM不知说清楚没有..