我怎么能滚动到第一个td为空

时间:2015-08-12 01:33:57

标签: jquery

我对此没有任何好运,我甚至似乎无法将一个类添加到第一个空的td单元格中,以便甚至尝试让它滚动

jsfiddle here https://jsfiddle.net/dxwd0qp0/16/

我需要在第一个空的td单元格中添加一个类,然后我想在pageload上将div滚动到那个空单元格

但我甚至无法让第一步工作

$( "td:empty" ).addClass( "scrollhere" );

和这个

if ($('td').text().trim() == ""){
  $(this).addClass('scrollhere');
}

和这个

if ((td.children().length == 0) && td.text().trim() == ""){
  $(this).addClass('scrollhere');
}

td信息是动态添加的,当我复制源html时出现,有一个html空间被添加到空td的“”

4 个答案:

答案 0 :(得分:5)

正如i19所说,你的TD没有空。你有每个TD的细胞。 尝试删除它,你的jquery addClass函数将正常工作。 之后使用scrollTop参数

添加jquery animate方法调用
   $('html, body').animate({
    scrollTop: $(".scrollhere").offset().top
}, 2000);

编辑: 尝试使用以下代码删除:

$("td").each(function() {
var $this = $(this);
$this.html($this.html().replace(/ /g, ''));});

删除后,尝试使用上一个滚动。

请注意,这会从所有道明元素中删除& nbsp

答案 1 :(得分:4)

您可以使用.filter().text()(不会返回 个字符)来申请您的课程:

$("td")
    .filter(function() {
        return ($(this).text() === '');
    })
    .addClass("scrollhere");

Fiddle(使用Wlada's animation example

答案 2 :(得分:1)

你的TD不是空的;它们包含 

你需要添加

$(document).ready(function () {
    $("td:empty").addClass("scrollhere");
    $('html, body').animate({
        scrollTop: $(".scrollhere").offset().top
    }, 2*1000); // <-- in miliseconds (2 seconds, update if you want to scroll faster)
});

参见演示 http://jsfiddle.net/dxwd0qp0/19/

<强>更新 如果你不能修改html,那就用这个

$(document).ready(function () {
    $('td').each(function (i, elem) {

        if ($(elem).html().trim() === '&nbsp;') {
            $(elem).addClass("scrollhere");
        }
    });

    $('html, body').animate({
        scrollTop: $(".scrollhere:first()").offset().top
    }, 2000);
});

参见演示 http://jsfiddle.net/dxwd0qp0/30/

更新2

如果您只想更新第一个空TD,请使用以下标志:

$(document).ready(function () {
    var foundOne = false;

    $('td').each(function (i, elem) {
        if ($(elem).html().trim() === '&nbsp;' && !foundOne) {
            $(elem).addClass("scrollhere");
            foundOne = true;
            return;
        }
    });

    $('html, body').animate({
        scrollTop: $(".scrollhere:first()").offset().top
    }, 2000);
});

更新了演示:

http://jsfiddle.net/dxwd0qp0/35/

答案 3 :(得分:0)

这应该设定焦点。

$('table:td:empty:eq(0)').focus();

这应该设置类

  $('table:td:empty:eq(0)').attr('class','className');