我正在阅读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 });
}
}
}
}
},
答案 0 :(得分:1)
您可以使用seed
参数将选择限制为候选列表。只需传入一组DOM元素。
例如,假设我们有以下DOM:
<div id="id1"></div>
<div id="id2"></div>
然后,执行以下选择:
Sizzle("#id1", null, null, null);
// [<div id="id1"></div>]
和
var candidates = [
document.getElementById("id1"),
document.getElementById("id2")
];
Sizzle("#id1", null, null, candidates);
// [<div id="id1"></div>]
可是:
var candidates = [
document.getElementById("id2")
];
Sizzle("#id1", null, null, candidates);
// []
注意:此功能似乎不属于公共API。
答案 1 :(得分:0)
种子通常用于确定伪随机数的特定序列。如果您想在每次运行中使用相同的重复数字顺序,则使用相同的种子。随机数生成器可以使用时间戳来确保种子变化,但是为了测试它,能够设置这样的种子非常有用。
我认为这种情况下的种子具有相似的含义,如果种子相同,则意味着Sizzle的结果在每次运行中都是相同的,如果结果不同,结果会有所不同。