Javascript jQuery:div和tbody之间的find行为不一致
我在jqueryby Id中使用Javascript jQuery:div和tbody之间的find行为不一致,javascript,jquery,html,css,selector,Javascript,Jquery,Html,Css,Selector,我在jqueryby Id中使用find选择器。在divvstbody的情况下,它的行为不同。这是一个更大的问题-为了清楚起见,这里是我的原始版本的简化版本 HTML <div id='iamdiv'>HELLO</div> <table> <tbody id='iamtbody'> <tr><td>HELLO TOO</td></tr> </tbody> </tab
find
选择器。在div
vstbody
的情况下,它的行为不同。这是一个更大的问题-为了清楚起见,这里是我的原始版本的简化版本
HTML
<div id='iamdiv'>HELLO</div>
<table>
<tbody id='iamtbody'>
<tr><td>HELLO TOO</td></tr>
</tbody>
</table>
<input type='text' id='div'/>
<input type='text' id='tbody'/>
小提琴:
我想在输入文本框中显示原始html,但是只显示tbody
一个,而不是div
。如果我使用过滤器
方法而不是查找
,那么它将用于div,而不是tbody
我的目标是为tbody和div提供一种一致的获取方法。使用
var allcontent=$('body')
而不是var allcontent=$($('body').html())代码>
$(文档).ready(函数(){
var allcontent=$('body');
var$divcontent=allcontent.find('#iamdiv');
$('#div').val($divcontent.html());
var$tbodycontent=allcontent.find('iamtbody');
$('#tbody').val($tbodycontent.html());
});代码>
输入{
宽度:100%;/*仅显示整个内容*/
}
你好
你好
两个问题:
find
查找子元素,但#iamdiv
是allcontents
jQuery对象中的顶级条目
您正在复制中的元素
var allcontent = $($('body').html());
我很确定这不是你想做的。(您说过这是故意的,是为了模拟从其他地方解析HTML。)
您说过,您的目标是在两种用例中都使用find
(而不是在一种用例中使用filter
,在另一种用例中使用find
)。要做到这一点,您需要将其他内容作为allcontent
的根
你也说过,出于某种原因,你不能改变
var allcontent = $($('body').html());
排队,甚至只是为了
var allcontent = $("<body>").append($('body').html());
var allcontent=$(“”)。追加($('body').html());
没关系,您仍然可以通过在后面添加一行来添加新的根元素,如下所示:
allcontent = $("<body>").append(allcontent);
allcontent=$(“”)。追加(allcontent);
实例:
$(文档).ready(函数(){
var allcontent=$($(($).html());//您说过我们无法更改此值
//添加的行:
allcontent=$(“”)。追加(allcontent);
var$divcontent=allcontent.find('#iamdiv');
$('#div').val($divcontent.html());
var$tbodycontent=allcontent.find('iamtbody');
$('#tbody').val($tbodycontent.html());
});代码>
你好
你好
var allcontent
错误。它应该是var allcontent=$('body')
@我故意这么做,因为我需要解析字符串的HTML版本。如果我只做$('body')
我已经知道它是有效的。我想解析一个字符串,但仍然解决了这个问题。您可以创建一个伪元素来实现这一点。。。类似于这样的情况:我故意使用$($('body').html())来模拟解析html字符串的示例。@bragboy:这将是问题中包含的有用信息。@bragboy:幸运的是,我允许您在我的答案中使用这一行。:-)检查更新的答案,更新后的问题@HimanshuTyagi OP要求一种方法来获取两种元素,而不是两种不同的方法。我不知道为什么..这篇文章var allcontent=$($('body').html())
是非常有意的,因为我使用相同的HTML作为源代码来指示我要解析的内容。我不能在这里附加body标签(就像我原来的问题一样,我正在实现一个无限滚动特性)。不触及这条线,还有其他解决办法吗?@bragboy:我不明白你为什么不能改变这条线。当然,只需在下一行添加以下内容:allcontent=$(“”)。append(allcontent)
。
allcontent = $("<body>").append(allcontent);