这是我的代码:
$myDiv = $('<div>1</div>');
$myDiv.each(function () {
console.log(this.html());
});
它会产生错误,因为this
应为$(this)
。可是等等。首先不是$myDiv
jQuery对象,因此this
也必须是jQuery对象。如果是这样,我为什么要将this
包裹在$( )
内?
答案 0 :(得分:6)
jQuery对象或多或少是常规DOM元素的数组。 each
迭代这些。 this
只是一个DOM元素,而$(this)
生成一个DOM元素的单元素数组,可以访问jQuery API函数。
答案 1 :(得分:1)
在这种情况下,this
实际上是指节点。
$myDiv = $('<div>1</div>');
$myDiv.each(function () {
console.log(this.innerHTML);
});
// outputs 1
答案 2 :(得分:1)
基本上,作为$()
获取的任何内容都成为jQuery添加其辅助方法的数组的一部分,.each()
方法实际上迭代了数组中的每个元素。也就是说,它只是元素,而不是具有所有好帮助方法的jQuery数组。
答案 3 :(得分:0)
据我了解,this
是一个DOM对象。试试这段代码吧:
$myDiv = $('<div>1</div>'); $myDiv.each(function () { alert(this.nodeName); });
答案 4 :(得分:0)
根据jquery文档,这是$(selector).each()
的预期行为
他们甚至给出了一个例子,说明“你想拥有jQuery对象而不是常规DOM元素”:http://api.jquery.com/each/#example-1
答案 5 :(得分:0)
当您在jQuery中创建HTML对象时,它会返回DOM元素。如果你真的想设置你的新dom元素的HTML,你必须像这样调用innerHTML属性:
$myDiv.each(function () {
console.log(this.innerHTML);
});
这里有关于创建DOM元素的jQUery API的参考:http://api.jquery.com/jQuery/#jQuery2
另外,我不确定你为什么要在刚刚创建的单个元素上调用每个函数?