0

所以,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'
});
4

4 回答 4

2

所以,var $moving我们正在创建 javascript 对象,对吧?

不,您正在声明一个指向对象的 JavaScript 变量。

但什么是$('<li/>')?它甚至不是一个 html 元素。

它返回一个 jQuery 对象。在这种特殊情况下,该对象包含尚未附加到 DOM 的 HTML 元素,其类型在第一个参数 ( <li>) 中指定,并具有在第二个参数中指定的属性。

另外,偏移值描述了$this元素的值?那么,在这种情况下,元素#slidingMenu li:first?

不太确定您在这里做什么$this,该代码中没有。但是,由于$selected引用了一个包含该元素的 jQuery 对象,并且您正在使用[0]语法从中获取第一个(并且碰巧是唯一的)元素,是的,它确实引用了该元素。

于 2012-08-12T19:50:34.473 回答
2
  • $("#slidingMenu");接受#slidingMenu和 $('#slidingMenu') 的引用返回一个 jQuery 对象。

  • $menu.find('li:first');li在 中找到第一个#slidingMenu

  • $moving = $('<li/>', properties)意思是,动态创建一个jQuery-wrapped li元素,但不添加到 DOM。更多。_

  • $selected是对 jQuery 对象的引用,并$selected[0]给出了一个元素引用/JavaScript 对象。但这并不意味着$selected[0]是对第一个对象和$selected[1]第二个对象的引用,依此类推。

于 2012-08-12T19:55:32.017 回答
1

jQuery 函数重载。这个特殊的重载接受一个 HTML 元素<li>or <li />,后跟一组要在该元素上设置的属性,创建 jQuery 包装的 DOM 元素并在其上设置这些属性。请注意,仅当字符串包含单个元素时设置属性才有效 -$("<a>text</a><div>otherel</div>", props)无效。

第二点,jQuery 将 DOM 元素包装在它自己的对象中,让您可以访问它的 API。它的行为类似于数组,因此[x]将获取x集合中的第 th 个元素。 $selected[0]将获得集合中的第一个(并且仅在这种情况下)元素$selected

于 2012-08-12T19:48:05.823 回答
0

$('<li/>')用 tag 创建一个空的 dom 元素li。是的,$selected[0]在这种情况下将是元素#slidingMenu li:first.

于 2012-08-12T19:48:34.080 回答