将jquery选择器传递给函数

时间:2012-11-05 15:15:24

标签: jquery

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

1 个答案:

答案 0 :(得分:9)

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

createNewList.call(this,$containerTop)