将jquery选择器传递给函数
您好,这可能是一个简单而愚蠢的问题,但是如何将jquery选择器传递给函数呢 我这样做,但它不工作。提前谢谢将jquery选择器传递给函数,jquery,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 $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 );
}
如果我将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);
if(listCount>=3&&listCount<6)
$(“”).append($(this.prevAll().andSelf()).appendTo($containerTop);
否则如果(列表计数>=6)
$(“”).append($(this.prevAll().andSelf()).appendTo($containerTwo);
其他的
$(“”).append($(this.prevAll().andSelf()).appendTo($container);
由于您是在之外定义函数。每个都会丢失上下文。尝试使用.call
将上下文正确设置为您期望的内容
createNewList.call(this,$containerTop)
执行$li时是否确实存在元素。每个…
?函数和传递函数看起来很好,代码在做什么或不做什么是个问题?是的,工作正常。我刚刚添加了这个函数。在此之前,它工作得很好,但我想让它成为一个函数,而不是写附加3次哇,你的男人!谢谢你,凯文。成功了。那么你能进一步解释我为什么需要它吗?你的函数不在$的范围内。所以这个在这个上下文中可能就是文档。所以你说的是$(“
”).append(document),这没有任何意义。你可以从字面上取$(“”).append(document)
,并将其放在控制台中以获得相同的错误。
createNewList.call(this,$containerTop)