私は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>
isまたは。の場合はすべて機能しますが、selector
isの場合は何も返しません。そして、要素のオブジェクトが必要です。#hero-units
.hero-unit
$(selector, $.parseHTML(data))
selector
#app-container
jQuery
div#app-container
そして、これが私を殺すものです:
$.parseHTML(data)
要素が含まれていdiv#app-container
ます。ただ$.parseHTML(data)[7]
です。- しかし、
$('#app-container', $.parseHTML(data))
は空の配列です。 $('div', $.parseHTML(data))
内のすべてのdiv
sが含まれますdiv#app-container
が、それ自体は含まれませんdiv#app-container
。
何が起きてる?何が起こっているのかというと、または$
によって返されるトップレベルの要素のいずれも見ておらず、その子だけを見ているようです。$.parseHTML(data)
$($.parseHTML(data)))
jQuery
これからオブジェクトを取得するにはどうすればよいですdiv#app-container
か$.parseHTML(data)
?
答え
-$(selector, $.parseHTML(data))
スタイルのルックアップはを使用し$.find
ます。このjQueryオブジェクトのトップレベルの要素を探しているので、$.filter
代わりに使用する必要があります。出来上がり。