我的代碼旨在迭代x次,每次將一段HTML插入div。.find()在調試控制檯中返回對象,但不在代碼中
我主要的HTML看起來是這樣的:
<body>
<h1>Main Page Test Title</h1>
<div class="container ">
<div id="button_list">
</div>
</div>
</body>
想在循環的每次迭代過程中加載HTML是:
<button class=' btn-block btn-lg'>
<div class='col-md-4'>
<img class="img_class" src='test.png' height='144' width='192'>
</div>
<div class='col-md-8'>
<h3 class="h3_class">Test Title</h3>
<p class="p_class">Test, Test, Test keyword, Key, Word</p>
</div>
</button>
我使用的代碼是:
$(document).ready(function() {
for(var i = 0;i<5;i++){
var $var = $('<div id="rbtn' + i +'">').load("button_template.html");
$("#button_list").append($var);
$var2 = $('#rbtn' + i);
$var3 = $var2.find('h3');
}
});
當我運行此代碼時,按鈕正確填充到主頁面中,並且$var2 = $('#rbtn' + i)
選擇器確實會返回一個對象,但額外的$var3 = $var2.find('h3')
將返回一個空對象。當我在google chrome調試模式下運行代碼並使用控制檯查看$ var2的值時,我看到了正確的對象。如果在控制檯模式下,我手動鍵入$var2.find('h3');
我也會得到正確的對象。但是,當我在代碼中做同樣的事情時,它不起作用。
即使沒有DOM元素與選擇器匹配,您仍然會得到一個沒有附加DOM元素的jQuery對象(即'$ var2.length === 0')。你到底希望從$('#btn'+ i)'返回什麼? –
呵呵,並且閱讀[load()]的文檔(http://api.jquery。com/load /),請確保在回調函數中運行此代碼(使用其中的nessacary僞裝) –