gpt4 book ai didi

javascript - jQuery() 在 jQuery.parseHTML() 结果中找不到元素

转载 作者:IT王子 更新时间:2023-10-29 03:22:00 26 4
gpt4 key购买 nike

我正在使用 QUnit 编写测试,并使用 $.ajax() 从本地运行的开发站点中提取一些测试的 HTML:

add_elements = function(location, selector) { 
$.ajax(location, {async: false}).done(function(data) {
stor.$els = $(selector, $.parseHTML(data));
stor.$els.appendTo($('body'));
})
}

在特定位置使用此函数,我将以下 data 传递到我的 .done() 回调:

<!DOCTYPE html>
<html lang="en">

<head>
<title>Home</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="/static/css/bootstrap.min.css" rel="stylesheet" media="screen">

</head>

<body>
<div id="app-container" class="container-fluid">
<div class="page-header">
<h1>
<a href="/">Home</a>
<small>Text</small>
</h1>
</div>

<div id="hero-units" class="carousel-inner slide">

<div class="hero-unit home item active">
<h1>
Text text text
</h1>
<p>
More text!
</p>
<div id="app-nav">
<a id="lets-go" class="btn btn-primary btn-large nav-forward" href="/what-up/">
Let's go
</a>
</div>
</div>

</div>
</div>

<script src="/static/js/jquery.js"></script>
<script src="/static/js/underscore.js"></script>
<script src="/static/js/backbone.js"></script>
<script src="/static/js/bootstrap.js"></script>
<script src="/static/js/site-fiddle.js"></script>
<script src="/static/js/site.js"></script>

</body>
</html>

如果 selector#hero-units.hero-unit,一切正常,但是 $(selector, $.parseHTML (data)) 如果 selector#app-container,则不返回任何内容!我想要 div#app-container 元素的 jQuery 对象。

这就是杀死我的原因:

  • $.parseHTML(data) 确实包含div#app-container元素。它只是 $.parseHTML(data)[7]
  • 然而,$('#app-container', $.parseHTML(data)) 是一个空数组。
  • $('div', $.parseHTML(data)) 包括 div#app-container 内的所有 div,但不是 div#app-container 本身。

这是怎么回事?看起来发生的事情是 $ 没有查看 $.parseHTML(data)$($.parseHTML (data))),还有他们的 child 。

如何从这个 $.parseHTML(data) 获取 div#app-containerjQuery 对象?

回答

$(selector, $.parseHTML(data)) 风格的查找使用 $.find。因为我正在寻找这个 jQuery 对象中的顶级元素,所以我应该改用 $.filter。瞧。

最佳答案

您需要创建一个 DOM 元素来附加 .parseHTML() 的结果首先,它会在 jQuery 遍历它并找到 div#app-container 之前创建一个 DOM 树。 .

var tempDom = $('<output>').append($.parseHTML(str));
var appContainer = $('#app-container', tempDom);

我使用了您的示例并使其正常运行:http://jsfiddle.net/gEYgZ/

.parseHTML()功能似乎在 <script> 上窒息标签,所以我不得不删除它们。

PS. 显然 <output>不是真正的 HTML 标签,仅用于示例

关于javascript - jQuery() 在 jQuery.parseHTML() 结果中找不到元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15403600/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com