jquery 没有父级的子选择器

发布于 2024-09-14 18:43:05 字数 697 浏览 6 评论 0原文

我正在查看创建轮播菜单的教程中的一些代码,并注意到没有父项的父子选择器。以前从未见过这个,并且对它实际在做什么感到困惑。

请参阅以下代码:

        var $wrapper = $('> div', this).css('overflow', 'hidden'),
        $slider = $wrapper.find('> ul'),
        $items = $slider.find('> li'),
        $single = $items.filter(':first'),

        singleWidth = $single.outerWidth(), 
        visible = Math.ceil($wrapper.innerWidth() / singleWidth), // note: doesn't include padding or border
        currentPage = 1,
        pages = Math.ceil($items.length / visible);

此处教程:http://jqueryfordesigners.com/jquery-infinite-carousel/

I was looking at some code from a tutorial for creating a carousel menu and noticed parent child selectors without the parent. Never seen this before, and confused to what it is actually doing.

See following code:

        var $wrapper = $('> div', this).css('overflow', 'hidden'),
        $slider = $wrapper.find('> ul'),
        $items = $slider.find('> li'),
        $single = $items.filter(':first'),

        singleWidth = $single.outerWidth(), 
        visible = Math.ceil($wrapper.innerWidth() / singleWidth), // note: doesn't include padding or border
        currentPage = 1,
        pages = Math.ceil($items.length / visible);

Tutorial here: http://jqueryfordesigners.com/jquery-infinite-carousel/

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

倒数 2024-09-21 18:43:05

这个带有上下文的选择器:

$('> div', this)

翻转以使用 .find() 像这样:

$(this).find('> div')

使用 > child-selector 是只是:

$(this).children('div')

其他人也在做同样的事情,他们可以使用 .children(),实际上这样做会更有效率。

This selector with a context:

$('> div', this)

gets flipped around to use a .find() like this:

$(this).find('> div')

which with the > child-selector is just:

$(this).children('div')

The others are doing the same deal, they could use .children(), and actually it'd be more efficient to do so.

不再让梦枯萎 2024-09-21 18:43:05

有一个父级(或者在本例中为 scope),请注意选择器内的 this 关键字,它与插件所应用的元素相关。

jQuery 的选择器允许你设置一个范围,它可以是任何 jQuery 元素对象。

考虑

$(".somediv").myplugin();

在插件内部

$("> div", this) 
is actually translated to 
$("> div", $(".somediv"))

看一下我的一个问题,答案解释了很多关于 jQuery 选择器的内容。
在 jQuery 中选择后代元素最快的方法是什么?

There is a parent(or in this case a scope), notice the this keyword inside the selector, that's relative to the element the plugin is being applied to.

jQuery's selectors allow you to set a scope, and it can be any jQuery element object.

Consider

$(".somediv").myplugin();

And inside the plugin

$("> div", this) 
is actually translated to 
$("> div", $(".somediv"))

Have a look at one of my questions, the answer explains quite a bit about jQuery's selectors.
What is the fastest method for selecting descendant elements in jQuery?

时光磨忆 2024-09-21 18:43:05
$('> div', this)

this 很重要。它是一个上下文参数,使查询等于

$(this).children('div');

参见$()<的文档/a> 了解更多信息;它特别提到了这一点:

在内部,选择器上下文是
使用 .find() 方法实现,
所以 $('span', this) 相当于
$(this).find('span').

$(this).find('> div') 表示“作为 this 子级的 div,等于 <代码>$(this).children('div')。

$('> div', this)

The this is important. It's a context parameter that makes the query equal to

$(this).children('div');

See the documentation for $() for more information; it specifically mentions this:

Internally, selector context is
implemented with the .find() method,
so $('span', this) is equivalent to
$(this).find('span').

$(this).find('> div') means "the divs that are children of this, which is equal to $(this).children('div').

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文