所以,var $moving
我们正在创建javascript对象,对吧?但是什么是$('<li/>')
?它甚至不是一个HTML元素。
此外,偏移值描述了$this
元素的值?那么,在元素#slidingMenu li:first
的情况下呢?
var $menu = $("#slidingMenu");
var $selected = $menu.find('li:first');
var $moving = $('<li/>',{
className : 'move',
top : $selected[0].offsetTop + 'px',
width : $selected[0].offsetWidth + 'px'
});
答案 0 :(得分:2)
所以,使用
var $moving
我们正在创建javascript对象,对吗?
不,您正在声明一个指向对象的JavaScript变量。
但是
$('<li/>')
是什么?它甚至不是一个HTML元素。
它返回一个jQuery对象。在这种特殊情况下,该对象包含一个尚未附加到DOM的HTML元素,第一个参数(<li>
)中指定的类型以及第二个参数中指定的属性。
此外,偏移值描述了
$this
元素的值?那么,在元素#slidingMenu li:first
的情况下呢?
不确定您在这里的内容,该代码中没有$this
。但是,由于$selected
引用了包含该元素的jQuery对象,并且您正在使用[0]
语法来获取第一个(并且仅发生)元素,是的,它确实引用了那个元素。
答案 1 :(得分:2)
$("#slidingMenu");
获取#slidingMenu
的引用,$('#slidingMenu')返回一个jQuery对象。
$menu.find('li:first');
找到li
中的第一个#slidingMenu
。
$moving = $('<li/>', properties)
表示,动态创建jQuery-wrapped
li
元素,但不会添加到DOM。对于more。
$selected
是对jQuery对象的引用,$selected[0]
给出了一个元素引用/ JavaScript对象。但它并不意味着$selected[0]
是对第一个对象的引用,{ {1}}到第二个等等。
答案 2 :(得分:1)
jQuery函数严重超载。这个特殊的重载需要一个HTML元素<li>
或<li />
,然后是一组要在该元素上设置的属性,创建jQuery包装的DOM元素并在其上设置这些属性。请注意,设置属性仅在字符串包含单个元素时才有效 - $("<a>text</a><div>otherel</div>", props)
将无效。
关于第二点,jQuery将DOM元素包装在自己的对象中,使您可以访问其API。它的行为与数组类似,因此[x]
将获得集合中的x
元素。 $selected[0]
将获得$selected
集中的第一个(仅在此情况下)元素。
答案 3 :(得分:0)
$('<li/>')
创建一个标记为li
的空dom元素。是的,在这种情况下,$selected[0]
将是元素#slidingMenu li:first.