Jquery选择器上下文不起作用

时间:2018-05-19 23:28:28

标签: javascript jquery

我有一个js对象,它有一个参数,用于定义HTML中的布局。在构建页面时,我使用jQuery修改该布局参数,然后在屏幕上绘制它。出于某种原因,当我尝试对对象使用jQuery选择器时,它没有找到任何东西。

这里我使用浏览器控制台显示对象参数:

$(Students_OE_Programs.layout)

(3) [div.test, text, div#student_programs_pb1_holder.pickboxHolder]
0:div.test
1:text
2:div#student_programs_pb1_holder.pickboxHolder
length:3
__proto__:Array(0)

现在我使用jQuery从这个对象中选择所有div。正如你在上面看到的,应该有2个,但我没有:

$('div',Students_OE_Programs.layout)

r.fn.init [prevObject: r.fn.init(3)]

我也尝试过:

$(Students_OE_Programs.layout).children('div')

r.fn.init [prevObject: r.fn.init(3)]

最令人费解的是,我在同一页面的其他部分做了完全相同的事情,它运作得很好。任何帮助,将不胜感激。如果有人提出这个问题,我很抱歉,我发现很难找到。

更新以包含以下示例。正如您所看到的那样,布局包含两个div,但是jQuery.append找不到任何匹配的内容,因此它不会附加任何跨度。

var Students_OE_Programs = {
	layout: null
}

$(document).ready(function() {
	var l = '<div class="test">Programs</div>\
			<div id="OEPrograms_holder" class="pickboxHolder"></div>';
		Students_OE_Programs.layout = $.parseHTML(l);
  console.log(Students_OE_Programs.layout);
	$('div',Students_OE_Programs.layout).append('<span>test</span>');
  
  $('body').append(Students_OE_Programs.layout);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
<body>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

这确实得到了相关问题的回答:

  

$(selector,$ .parseHTML(data))样式查找使用$ .find。由于我正在寻找这个jQuery对象中顶级元素,我应该使用$ .filter代替。瞧。

在项目的其他部分,我不是在寻找能够正常工作的顶级元素。

谢谢大家的帮助!