3

您好,这可能是一个简单的愚蠢问题,但我如何将 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);
4

1 回答 1

9

由于您是在 之外定义函数.each,因此它正在丢失上下文。尝试使用.call将上下文正确设置为您期望的内容。

createNewList.call(this,$containerTop)
于 2012-11-05T15:21:20.443 回答