在下面的代碼片段中,爲什麼當它應該是1時長度爲0?jQuery選擇器上下文與最外面的元素不匹配
var jQueryObj = $("<p>testing</p>");
// Display the length
$('body').html($("p", jQueryObj).length);
<script src="http://code.jquery.com/jquery-2.2.0.js"></script>
在下面的代碼片段中,爲什麼當它應該是1時長度爲0?jQuery選擇器上下文與最外面的元素不匹配
var jQueryObj = $("<p>testing</p>");
// Display the length
$('body').html($("p", jQueryObj).length);
<script src="http://code.jquery.com/jquery-2.2.0.js"></script>
當你提供的情況下,你告訴了jQuery找出這方面內p
元素,讓你的選擇會看任何p
標籤是上下文的子項。
如果將容器添加到上下文中,它將能夠找到該元素。
var jQueryObj = $("<div><p>testing</p></div>");
// Display the length
$('body').html($("p", jQueryObj).length);
<script src="http://code.jquery.com/jquery-2.2.0.js"></script>
當你傳遞一個上下文jQuery的,它等同於使用find
方法,它着眼於後代元素。從jQuery docs:
內部,選擇上下文與.find()方法來實現,所以 $( '跨',這一點)等同於$(本).find( '跨')。
你p
元素不是一個後代,所以你將需要使用filter
:
jQueryObj.filter("p");
的filter
方法減少了匹配組的元素的那些選擇器匹配的(或通過限定的測試由一個函數)。在你的情況下,匹配的元素集包含一個元素(p
),它將與選擇器匹配。
你在裏面你原來<p>
(jQueryObj
已經表示<p>
標籤)尋找<p>
。
由於您的原始<p>
元素中沒有<p>
元素,因此您的搜索不會返回任何結果。