1

我基本上有 html

<div class="letter">A</div>
<div class="letter">B</div>
<div class="letter"></div>
<div class="letter">D</div>
<div class="letter"></div>

和一个 jQuery 函数,它返回第一个空 div 的索引(带有“字母”类)

var firstEmptyIndex;

var findStart = function(){
    var firstEmptyElement = $('div.letter:empty:eq(0)');
    firstEmptyIndex = firstEmptyElement.index('div.letter');
}

如何扩展此 findStart 函数以传递将开始在给定索引处搜索空元素的变量。例如,我想运行 findStart(3),它将返回 HTML 示例 (4) 中第五个元素的索引。运行 findStart(0) 或 findStart(1) 将返回 2。

4

5 回答 5

3

您可以使用:gt和的组合:first

var findStart = function(i){
    return $('div.letter:gt(' + i + '):empty:first').index('div.letter');
}
于 2012-10-31T13:58:35.033 回答
0

您可以使用 JQuery 的filter方法,该方法以一种形式允许您传递一个过滤函数,该函数接收您的索引。因此,以下应该有效:

someResultSet.filter(function (i) { return i < someOtherIndex; })
于 2012-10-31T13:55:11.143 回答
0

slice(start[,end])方法或:gt(index)选择器

于 2012-10-31T13:57:30.450 回答
0

使用 jQuery 的过滤器方法只返回没有文本的元素。

var selector = ".letter" ;
$(selector).filter(function(){return !$(this).text()}).get(0) ;
于 2012-10-31T13:58:19.590 回答
0

试试这个它会工作
它返回 null 是没有找到空元素。
否则它将返回下一个空元素索引

var findStart = function(n){
    var i=n-1,l=$('div.letter').length;
    for(;i<l;i++){
        if($('div.letter').eq(i).html()==""){
            return i;
        } 
    }
    return null;
}
于 2012-10-31T14:00:56.737 回答