3

我正在阅读 Sizzle 源代码。我看到了下面的定义

function Sizzle(selector, context, results, seed)

我的问题是参数种子的含义是什么?我在 API 文档中找不到它

谢谢

附录

seed参数用于 jQuery 的事件处理程序源(从 2.1.4 开始):

jQuery.find = Sizzle;
// [...]
jQuery.event = {
    // [..]
    handlers: function( event, handlers ) {
        // [..]
        // Find delegate handlers
        if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {

            for ( ; cur !== this; cur = cur.parentNode || this ) {

                // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
                if ( cur.disabled !== true || event.type !== "click" ) {
                    matches = [];
                    for ( i = 0; i < delegateCount; i++ ) {
                        handleObj = handlers[ i ];

                        // Don't conflict with Object.prototype properties (#13203)
                        sel = handleObj.selector + " ";

                        if ( matches[ sel ] === undefined ) {
                            matches[ sel ] = handleObj.needsContext ?
                                jQuery( sel, this ).index( cur ) >= 0 :
                                // 
                                // Right here to find if cur matches the 
                                // delegated event handler's selector.
                                // 
                                jQuery.find( sel, this, null, [ cur ] ).length;
                                // There: -----------------------^
                        }
                        if ( matches[ sel ] ) {
                            matches.push( handleObj );
                        }
                    }
                    if ( matches.length ) {
                        handlerQueue.push({ elem: cur, handlers: matches });
                    }
                }
            }
        }
    },
4

2 回答 2

1

您可以使用该seed参数将选择限制为候选列表。只需传入一个 DOM 元素数组。

例如,假设我们有以下 DOM:

<div id="id1"></div>
<div id="id2"></div>

然后,执行以下选择:

Sizzle("#id1", null, null, null);
// [<div id=​"id1">​&lt;/div>​]

和:

var candidates = [
    document.getElementById("id1"),
    document.getElementById("id2")
];
Sizzle("#id1", null, null, candidates);
// [<div id=​"id1">​&lt;/div>​]

但:

var candidates = [
    document.getElementById("id2")
];
Sizzle("#id1", null, null, candidates);
// []

注意:此功能似乎不是公共 API 的一部分。

于 2014-10-30T06:35:43.620 回答
0

种子通常用于确定特定的伪随机数序列。如果您希望每次运行都使用相同的重复数字顺序,则使用相同的种子。随机数生成器可以使用时间戳来确保种子变化,但对于测试它,能够设置这样的种子非常有用。

我假设在这种情况下种子将具有相似的含义,这意味着如果种子相同,则每次运行的 Sizzle 的结果都是相同的,如果不同,结果将是不同的。

于 2013-07-09T11:52:45.150 回答