您好这可能是一个简单的愚蠢问题,但我如何将jquery选择器传递给函数?
我这样做但不起作用。提前谢谢!
var $list=$('#startlist')
var $container=$list.parent();
var $containerTop=$('#toprow');
var $containerTwo=$('#etrow #bottomrow');
var $li=$list.find('li');
var totHt=0;
var totItems=$li.length;
var listCount = 0;
$li.each(function( idx){
var ht=$(this).outerHeight(true);
if( totHt + ht >= maxHt || totHt + ht + 10 >=maxHt || idx==totItems-1){
if (listCount>=3 && listCount < 6)
createNewList($containerTop);
else if (listCount >=6)
createNewList($containerTwo);
else
createNewList($container);
totHt=0;
listCount++;
}else{
totHt += ht;
}
});
function createNewList ($cont)
{
$('<ul>').append( $(this).prevAll().andSelf() ).appendTo( $cont );
}
我收到此错误:
Uncaught Error: NOT_FOUND_ERR: DOM Exception 8
如果我用这个替换if块它可以正常工作:
if (listCount>=3 && listCount < 6)
$('<ul>').append( $(this).prevAll().andSelf() ).appendTo( $containerTop);
else if (listCount >=6)
$('<ul>').append( $(this).prevAll().andSelf() ).appendTo($containerTwo);
else
$('<ul>').append( $(this).prevAll().andSelf() ).appendTo($container);
答案 0 :(得分:9)
由于您在.each
之外定义了函数,因此它正在丢失上下文。尝试使用.call
将上下文正确设置为您期望的内容。
createNewList.call(this,$containerTop)